[英]How can a Vec be returned as a typed array with wasm-bindgen?
我有一個Vec
我想返回並轉換為帶有 wasm-bindgen 的類型化數組,即將Vec<u32>
Uint32Array
Vec<u32>
轉換為Uint32Array
。 從我的研究來看,wasm-bindgen 現在無法自行處理自動轉換這些內容(就像它對String
所做的那樣),而您必須使用js-sys板條箱。 但是,我還沒有找到有關如何使用此板條箱的明確示例。 如果可以提供如何使用它的清晰簡單示例,將不勝感激。
為了完整起見,如果答案可以解釋如何公開返回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>
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[..]);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.