Rust全局变量
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();
}
作者: 咕咚!
出处: https://www.cnblogs.com/linga/
关于作者:专注虚拟化,运维开发,RPA,Rust,Go,Python!
本文版权归作者和博客园共有,禁止*.csdn.net转载,禁止以盈利为目的的转载,转载文章,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(oldsixa@163.com)咨询.