【发布时间】:2021-04-02 09:33:15
【问题描述】:
我正在尝试实现一种方法来发送u32 的数组(如果可能的话,最终是usize 的数组of 数组),因为你不能只声明一个公共wasm_bindgen 类型的数组字段。但是,使用wasm_bindgenPR 1749 中概述的示例,我似乎无法将数组或切片转换为js_sys::Array;它仅适用于Vecs。我的问题是,为什么?见下文
pub fn test() -> js_sys::Array {
let arr: [u32; 5] = [0,1,2,3,4];
let slice = &arr[0..2];
let vec: Vec<u32> = vec![0,1,2];
arr.into_iter().map(JsValue::from).collect() // This doesn't work
slice.into_iter().map(JsValue::from).collect() // Also doesn't work
vec.into_iter().map(JsValue::from).collect() // Works as expected!
}
具体错误为:the trait 'wasm_bindgen::cast::JsCast' is not implemented for 'u32'
数组和切片示例似乎不适用于任何数字类型、整数或浮点数。我唯一的想法是因为 PR 1749 中的实现似乎需要一个 ref,并且数组分配在堆栈上 FromIterator 对数组中的项目无效?
是否有其他方法可以实现我想要对数组执行的操作(通过wasm_bindgen 越过边界传递给 JS),或者如果没有,为什么?我很想知道。
【问题讨论】:
标签: arrays rust iterator webassembly wasm-bindgen