Box<[T]>
和 Vec<T>
T 参数 | &T 参数 | &mut T 参数 | T 返回值 | Option<T> 参数 | Option<T> 返回值 | JavaScript 表示 |
---|---|---|---|---|---|---|
是 | 否 | 否 | 是 | 是 | 是 | JavaScript Array 对象 |
您可以将装箱的切片和 Vec
传递给 JS,以及从 JS 中接收它们,这些切片和 Vec
可以包含多种不同的类型
JsValue
。- 导入的 JavaScript 类型。
- 导出的 Rust 类型。
String
。
您还可以将装箱的数字切片传递给 JS,但它们将被转换为类型化数组(Uint8Array
、Int32Array
等),而不是普通数组。
Rust 示例用法
#![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 } }
JavaScript 示例用法
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
}