问题描述
我有一个@import '/sweetalert2';
@import '~sweetalert2';
@import 'sweetalert2/dist';
,我想返回并转换为带有wasm-bindgen的类型化数组,即将Vec
转换为Vec<u32>
。从我的研究看来,wasm-bindgen现在无法自行自动处理这些转换(就像Uint32Array
一样),而必须使用js-sys板条箱。但是,我还没有找到使用此板条箱的方法的清晰示例。如果能提供一个清晰的简单示例来使用它,将不胜感激。
出于完整性考虑,如果答案能够解释如何公开返回String
的函数以及struct成员,那将是很好的,即,如何将这些定义转换为可以使用的东西:
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[..]);
}
通过构造一个吸气剂即可暴露该结构:
#[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[..]);
}
}