mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-06-24 18:21:33 +00:00
Implement support for Uint8ClampedArray
This commit implements support for binding APIs that take `Uint8ClampedArray` in JS. This is pretty rare but comes up in a `web-sys` binding or two, and we're now able to bind these APIs instead of having to omit the bindings. The `Uint8ClampedArray` type is bound by using the `Clamped` marker struct in Rust. For example this is declaring a JS API that takes `Uint8ClampedArray`: use wasm_bindgen::Clamped; #[wasm_bindgen] extern { fn takes_clamped(a: Clamped<&[u8]>); } The `Clamped` type currently only works when wrapping the `&[u8]`, `&mut [u8]`, and `Vec<u8>` types. Everything else will produce an error at `wasm-bindgen` time. Closes #421
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
|
||||
#![doc(hidden)]
|
||||
|
||||
use JsValue;
|
||||
use {JsValue, Clamped};
|
||||
|
||||
macro_rules! tys {
|
||||
($($a:ident)*) => (tys! { @ ($($a)*) 0 });
|
||||
@ -40,6 +40,7 @@ tys! {
|
||||
CHAR
|
||||
OPTIONAL
|
||||
UNIT
|
||||
CLAMPED
|
||||
}
|
||||
|
||||
#[inline(always)] // see `interpret.rs` in the the cli-support crate
|
||||
@ -202,3 +203,10 @@ impl<T: WasmDescribe> WasmDescribe for Result<T, JsValue> {
|
||||
T::describe()
|
||||
}
|
||||
}
|
||||
|
||||
impl<T: WasmDescribe> WasmDescribe for Clamped<T> {
|
||||
fn describe() {
|
||||
inform(CLAMPED);
|
||||
T::describe();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user