我想创建一个函数find
,它接受一个Vec<Vec<isize>>
类型的matrix
参数,并返回另一个Vec<Vec<(usize, usize)>>
类型的矩阵,不幸的是,wasm_bindgen
抱怨类型不“兼容”。
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
^^^^^^^^^^^^ <- Error
pub fn find (matrix: Vec<Vec<isize>>, threshold: usize) -> Vec<Vec<(usize, usize)>> {
// cut
}
错误
rustc: the trait bound `Vec<isize>: JsObject` is not satisfied
the following other types implement trait `JsObject`:
Array
ArrayBuffer
BigInt
BigInt64Array
BigUint64Array
Boolean
Collator
CompileError
and 47 others
required because of the requirements on the impl of `FromWasmAbi` for `Box<[Vec<isize>]>`
3. rustc: the trait bound `Vec<(usize, usize)>: JsObject` is not satisfied
the following other types implement trait `JsObject`:
Array
ArrayBuffer
BigInt
BigInt64Array
BigUint64Array
Boolean
Collator
CompileError
and 47 others
required because of the requirements on the impl of `IntoWasmAbi` for `Box<[Vec<(usize, usize)>]>`
在这种情况下使用什么函数签名?
2条答案
按热度按时间zpf6vheq1#
我也有同样的问题我知道我没有解决你的直接问题,但是我解决我的问题的方法不是在vec中返回未定义大小的vec,而是使用js_sys将内部vec转换为Uint8Array。我能展示它的最好方法是这样。然后你可以用数组 Package 数组,这是我的猜测。据我所知,这是因为编译器需要知道未定义的usize不允许的数组大小。
wj8zmpe12#