мапить на wasm объекты функционал и дергать их через js не очень хочется.. классно было бы найти какое-то решение чтобы все внутри работало независимо от wasm и js
к примеру вот такое есть с фьючами и стримом
#[wasm_bindgen]
pub struct Caller {
tx: futures::channel::mpsc::UnboundedSender<u32>,
}
#[wasm_bindgen]
impl Caller {
pub fn new() -> Caller {
let (tx, mut rx) = futures::channel::mpsc::unbounded::<u32>();
spawn_local(async move {
while let Some(item) = rx.next().await {
console_log!("wasm: {:?}", item);
}
});
Caller{tx}
}
pub fn send(&mut self, i: u32) {
self.tx.unbounded_send(i);
}
}
в js
let call = mse.Caller.new();
потом дергаем периодически call.send(i++); и все в расте работает как нужно
тут даже вопрос скорее не в том как это сделать в wasm, а как это можно сделать в расте вообще правильно с точки зрения архитектуры приложения
Во-первых: нафига фьючи и каналы вообще? Зачем асинхронность? Тем более - в JS/WASM?
Обсуждают сегодня