我有两个导出到 Javascript 的结构。我可以创建实例并在 JavaScript 中使用它们而不会出现任何错误,但是当我将实例推送到 Rust 端的向量中时,出现错误“未捕获的错误:传递给 rust 的空指针”
由于所有权已更改,JS 对象变为 null 是完全正常的,但我还需要保留我的 JavaScript 对象以更改 JavaScript 方面的内容。
是否有任何正确的方法来保持“vect”对象不为空并对更改开放?
我添加了一个工作示例。您可以在浏览器的控制台中看到错误。
锈代码
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
struct Vector3 {
x: f32,
y: f32,
z: f32,
}
#[wasm_bindgen]
impl Vector3 {
#[wasm_bindgen(constructor)]
pub fn new() -> Vector3 {
return Vector3 {
x: 0.0,
y: 0.0,
z: 0.0,
};
}
pub fn get_x(&self) -> f32 {
self.x
}
}
#[wasm_bindgen(extends = Object)]
struct Group {
list: Vec<Vector3>,
}
#[wasm_bindgen]
impl Group {
#[wasm_bindgen(constructor)]
pub fn new() -> Group {
return Group { list: vec![] };
}
pub fn add(&mut self, vec: Vector3) {
self.list.push(vec);
}
}
JavaScript 代码
let group = new Group();
let list = [];
for (let i = 0; i < 10; i++) {
let vect = new Vector3();
list.push(vect);
group.add(vect);
}
setInterval(() => {
for (let i = 0; i < list.length; i++) {
const vect = list[i];
console.log(vect.get_x());
}
}, 1000);