Rust全局变量
Rust全局变量的一种解决方案,由于mut
问题,会导致unsafe
代码块。
use std::{collections::HashMap, sync::OnceLock};
/// 全局变量,模拟SESSION管理器
pub static mut SESSION: OnceLock<HashMap<String, String>> = OnceLock::new();
/// 初始化函数
pub fn init() {
unsafe {
SESSION.get_or_init(|| HashMap::new());
}
}
/// 插入kv
pub fn insert(k: String, v: String) {
unsafe {
SESSION.get_mut().unwrap().insert(k, v);
}
}
/// 查找
pub fn get(k: String) -> String {
let v = unsafe {
let v: String = SESSION.get().unwrap().get(&k).unwrap().clone();
v
};
v
}
fn main() {
init();
let a = std::thread::spawn(|| {
insert("a".to_string(), "b".to_string());
});
let b = std::thread::spawn(|| {
insert("b".to_string(), "c".to_string());
});
let c = std::thread::spawn(|| {
let v = get(&"a".to_string());
println!("{:?}", v);
});
a.join().unwrap();
b.join().unwrap();
c.join().unwrap();
}
标签:string,get,unwrap,SESSION,let,全局变量,Rust,String
From: https://www.cnblogs.com/linga/p/17917159.html