Box<[T]>
and Vec<T>
T parameter | &T parameter | &mut T parameter | T return value | Option<T> parameter | Option<T> return value | JavaScript representation |
---|---|---|---|---|---|---|
Yes | No | No | Yes | Yes | Yes | A JavaScript Array object |
You can pass boxed slices and Vec
s of several different types to and from JS:
JsValue
s.- Imported JavaScript types.
- Exported Rust types.
String
s.
You can also pass boxed slices of numbers to JS,
except that they're converted to typed arrays (Uint8Array
, Int32Array
, etc.)
instead of regular arrays.
Example Rust Usage
#![allow(unused)] fn main() { use wasm_bindgen::prelude::*; #[wasm_bindgen] pub fn take_boxed_js_value_slice_by_value(x: Box<[JsValue]>) {} #[wasm_bindgen] pub fn return_boxed_js_value_slice() -> Box<[JsValue]> { vec![JsValue::NULL, JsValue::UNDEFINED].into_boxed_slice() } #[wasm_bindgen] pub fn take_option_boxed_js_value_slice(x: Option<Box<[JsValue]>>) {} #[wasm_bindgen] pub fn return_option_boxed_js_value_slice() -> Option<Box<[JsValue]>> { None } }
Example JavaScript Usage
import {
take_boxed_js_value_slice_by_value,
return_boxed_js_value_slice,
take_option_boxed_js_value_slice,
return_option_boxed_js_value_slice,
} from './guide_supported_types_examples';
take_boxed_js_value_slice_by_value([null, true, 2, {}, []]);
let values = return_boxed_js_value_slice();
console.log(values instanceof Array); // true
take_option_boxed_js_value_slice(null);
take_option_boxed_js_value_slice(undefined);
take_option_boxed_js_value_slice([1, 2, 3]);
let maybeValues = return_option_boxed_js_value_slice();
if (maybeValues == null) {
// ...
} else {
console.log(maybeValues instanceof Array); // true
}