gpt4 book ai didi

rust - 如何使用 Vec 作为返回类型并使用 wasm_bindgen 使其在 Javascript 中可读

转载 作者:行者123 更新时间:2023-11-29 08:09:02 24 4
gpt4 key购买 nike

我想编译以下代码。

use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub struct Dummy {}

#[wasm_bindgen]
pub fn test() -> Vec<Dummy> {
vec![]
}

但是,编译器不允许我这样做。

error[E0277]: the trait bound `std::boxed::Box<[Dummy]>: wasm_bindgen::convert::traits::IntoWasmAbi` is not satisfied
--> xxxx
|
XX | #[wasm_bindgen]
| ^^^^^^^^^^^^^^^ the trait `wasm_bindgen::convert::traits::IntoWasmAbi` is not implemented for `std::boxed::Box<[Dummy]>`
|
= help: the following implementations were found:
<std::boxed::Box<[f32]> as wasm_bindgen::convert::traits::IntoWasmAbi>
<std::boxed::Box<[f64]> as wasm_bindgen::convert::traits::IntoWasmAbi>
<std::boxed::Box<[i16]> as wasm_bindgen::convert::traits::IntoWasmAbi>
<std::boxed::Box<[i32]> as wasm_bindgen::convert::traits::IntoWasmAbi>
and 9 others
= note: required because of the requirements on the impl of `wasm_bindgen::convert::traits::IntoWasmAbi` for `std::vec::Vec<Dummy>`

我使用的是最新版本的 wasm_bindgen (v0.2.55)。我认为这应该是可能的,对吧?

最佳答案

看起来还不可能,有一个相关的问题here .提到的一些解决方法包括序列化/反序列化字节或通过 Serde 的 JSON。但是转换为 JS Array 看起来像是 Pauan 添加的更好的解决方法。以您的示例为例,看看这是否适合您:

use js_sys::Array;
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub struct Dummy {}

#[wasm_bindgen]
pub fn test() -> Array {
let dummies: Vec<Dummy> = vec![];
dummies.into_iter().map(JsValue::from).collect()
}

关于rust - 如何使用 Vec<T> 作为返回类型并使用 wasm_bindgen 使其在 Javascript 中可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58987115/

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