Допустим, у меня есть 2 структуры
struct Child {
foo: String,
}
impl Child {
pub fn do_something(&self) {
/* some stuff */
}
}
#[wasm_bindgen]
pub struct Parent {
child: Child,
}
#[wasm_bindgen]
impl Parent {
pub fn new() -> Self {
Self { child: Child { foo: String::new() } }
}
pub fn child(&self) -> &Child {
&self.child
}
}
Я могу получить доступ к родительской структуре из JavaScript и создать ее с помощью метода new
. Проблема в том, что я не могу скомпилировать код из-за ошибки cannot return a borrowed ref with #[wasm_bindgen]
в методе child()
.
Есть ли способ получить указатель на child
и получить к нему доступ из JavaScript? Почему Rust не может вернуть заимствованную ссылку на WebAssembly? Это потому, что JavaScript может изменить его значение, а Rust не может гарантировать неизменность данных?