微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 String 变量插入全局可变 HashMap使用 lazy_static 和 Mutex而不会导致“寿命不够长”问题?

如何解决如何将 String 变量插入全局可变 HashMap使用 lazy_static 和 Mutex而不会导致“寿命不够长”问题?

我正在使用 Rust,为了方便起见,我想使用全局可变 HashMap。但是,虽然可以使用 HashMaplazy_static 定义全局可变 Mutex,但我的函数中定义的 String 变量很难具有相同的寿命全球时间HashMap

我试过直接插入 &str 并且效果很好。有没有办法将字符串转换为纯值?

lazy_static! {
    static ref USER_TOKEN_HASHMAP: Mutex<HashMap<&'static str,&'static str>> = {
        let mut m = HashMap::new();
        Mutex::new(m)
    };
}

fn func() {
    let mut _map = USER_TOKEN_HASHMAP.lock().unwrap();
    let user_email = String::from("aaa");
    let user_password = String::from("bbb");
    _map.insert(user_email.as_str(),user_password.as_str());
}

错误信息:

`user_email` does not live long enough
values in a scope are dropped in the opposite order they are defined
rustc(E0597)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。