我想对网络应用程序的每一帧的大量数据进行计算。JavaScript 只会使用其中的一个子集,因此与其在 WebAssembly 和 JavaScript 之间来回发送每一帧的整个数据集,不如在我的 WebAssembly 模块内部维护数据。
在 C 中,类似这样的工作:
#include <emscripten/emscripten.h>
int state = 0;
void EMSCRIPTEN_KEEPALIVE inc() {
state++;
}
int EMSCRIPTEN_KEEPALIVE get() {
return state;
}
Run Code Online (Sandbox Code Playgroud)
在 Rust 中可以做同样的事情吗?我尝试这样做static:
static mut state: i32 = 0;
pub fn main() {}
#[no_mangle]
pub fn add() {
state += 1;
}
#[no_mangle]
pub fn get() -> i32 {
state
}
Run Code Online (Sandbox Code Playgroud)
但似乎static变量不能是可变的。