gpt4 book ai didi

vector - 如何使用 wasm-bindgen 将 Vec 作为类型化数组返回?

转载 作者:行者123 更新时间:2023-12-03 11:31:25 68 4
gpt4 key购买 nike

我有一个 Vec我想返回并使用 wasm-bindgen 转换为类型化数组,即转换 Vec<u32>进入 Uint32Array .从我的研究来看,wasm-bindgen 似乎无法立即自动处理它们本身的转换(就像它对 String 所做的那样),而您必须使用 js-sys箱。然而,我还没有找到如何使用这个 crate 的明确示例。如果能提供如何使用它的清晰简单示例,我们将不胜感激。

为了完整起见,如果答案能够解释如何公开返回 Vec<u32> 的函数,那就太好了,以及一个结构成员,即如何将这些定义转换成可以工作的东西:

#[wasm_bindgen]
pub fn my_func() -> Vec<u32> {
inner_func() // returns Vec<u32>
}

#[wasm_bindgen]
pub struct my_struct {
#[wasm_bindgen(readonly)]
pub my_vec: Vec<u32>,
}

最佳答案

您可以转换 Vec<u32>js_sys::Uint32Array .所以你的 my_func看起来像:

#[wasm_bindgen]
pub fn my_func() -> js_sys::Uint32Array {
let rust_array = inner_func();
return js_sys::Uint32Array::from(&rust_array[..]);
}

并且可以通过制作 getter 来公开结构:

#[wasm_bindgen]
pub struct my_struct {
// Note: not pub
my_vec: Vec<u32>,
}

#[wasm_bindgen]
impl my_struct {
#[wasm_bindgen(getter)]
pub fn my_vec(&self) -> js_sys::Uint32Array {
return js_sys::Uint32Array::from(&self.my_vec[..]);
}
}

关于vector - 如何使用 wasm-bindgen 将 Vec 作为类型化数组返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64454597/

68 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com