我是 Rust 的新手。
我定义了一个User
by的全局 HashMap lazy_static
。
里面有一生User
,所以我要在里面设置一生lazy_static
。好像只能'static
用在lazy_static
。
这是一个问题:我现在可以将“非静态”用户插入 HashMap 吗?
这是插入非静态用户的代码:
use std::collections::HashMap;
use lazy_static::lazy_static;
use std::sync::Mutex;
struct User<'a> {
name: &'a str,
score: f32,
}
lazy_static! {
static ref USERS: Mutex<HashMap<u64, User<'static>>> = Mutex::new(HashMap::new());
}
fn new_user(id: u64, name: &str, score: f32) {
let user = User { name, score };
USERS.lock().unwrap().insert(id, user);
}
fn remove_user(id: u64) {
USERS.lock().unwrap().remove(&id);
}
fn main() {
new_user(1, "hello", 1.2);
remove_user(1);
}
这是错误:
error[E0621]: explicit lifetime required in the type of `name`
--> src/main.rs:16:38
|
16 | USERS.lock().unwrap().insert(id, user);
| ^^^^ lifetime `'static` required