小编Jak*_*sen的帖子

如何在用 Rust 编写的 WebAssembly 模块中保持内部状态?

我想对网络应用程序的每一帧的大量数据进行计算。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变量不能是可变的。

rust webassembly

7
推荐指数
2
解决办法
1384
查看次数

标签 统计

rust ×1

webassembly ×1