Как сохранить внутреннее состояние в модуле WebAssembly, написанном на Rust?

Jakob Mulvad Nielsen спросил: 14 ноября 2017 в 07:33 в: rust

Я хочу выполнять вычисления для большого набора данных в каждом кадре моего веб-приложения. JavaScript будет использовать только его часть, поэтому вместо отправки всего набора данных между WebAssembly и JavaScript в каждом кадре было бы неплохо, если бы данные поддерживались внутренне в моем модуле WebAssembly.

В C что-то подобное работает:

#include <emscripten/emscripten.h>int state = 0;void EMSCRIPTEN_KEEPALIVE inc() {
    state++;
}int EMSCRIPTEN_KEEPALIVE get() {
    return state;
}

Возможно ли то же самое в Rust? Я пытался сделать это с помощью static следующим образом:

static mut state: i32 = 0;pub fn main() {}#[no_mangle]
pub fn add() {
    state += 1;
}#[no_mangle]
pub fn get() -> i32 {
    state
}

Но кажется, что переменные static не могут быть изменяемыми.

0 ответов