使用 wasm-bindgen 时如何在 Rust 中存储全局状态?

Ada*_*m R 8 rust

我正在尝试用 Rust 编写一个数据存储,它跨 wasm-bindgen 边界从 JavaScript 接收对象并存储它们以供以后检索。这是我希望的简化版本:

static mut MAP: HashMap<i32, String> = HashMap::new();

#[wasm_bindgen]
pub fn add_value(index: i32, value: String) {
    unsafe {
        MAP.insert(index, value);
    }
}

#[wasm_bindgen]
pub fn get_value(index: i32) -> String {
    unsafe {
        (*MAP.get(&index).unwrap()).clone()
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我从 Rust 编译器得到这个错误:

static mut MAP: HashMap<i32, String> = HashMap::new();

#[wasm_bindgen]
pub fn add_value(index: i32, value: String) {
    unsafe {
        MAP.insert(index, value);
    }
}

#[wasm_bindgen]
pub fn get_value(index: i32) -> String {
    unsafe {
        (*MAP.get(&index).unwrap()).clone()
    }
}
Run Code Online (Sandbox Code Playgroud)

如何存储状态,以便跨 wasm-bindgen 边界的后续调用可以检索以前存储的值?