首页 > 解决方案 > 使用 wasm-bindgen 时如何在 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()
    }
}

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

error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants

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

标签: rust

解决方案


推荐阅读