rust 的全局变量
在rust中不能 直接使用 static 关键字 定义 全局变量。
可以借助第三方库 lazy_static 的帮助。once_cell 似乎不如这个库稳定度高。
引入库之后
pub fn insert(name: String) { // map : MutexGuard<HashMap<...>> let mut map = MAPS.lock().unwrap(); println!("name: {:?}", map); // 因自动解引用,无需写为 *map map.insert("name".to_string(), name); println!("name: {:?}", map.get(&"name".to_string()).unwrap()); } // 在mutex释放锁前,MAPS不能被调用。否则程序陷入无限等待中。 pub fn show() { let mut map = MAPS.lock().unwrap(); println!("name: {:?}", &map); map.insert("name".to_string(), "name".to_string()); println!("name: {:?}", map.get(&"name".to_string()).unwrap()); } // "mut map" was drop with the scope end. lazy_static! { static ref MAPS: Mutex<HashMap<String, String>> = { let mut map: HashMap<String, String> = HashMap::new(); map.insert("James".to_string(), "admin".to_string()); map.insert("Jim".to_string(), "user".to_string()); Mutex::new(map) }; }
调用
fn main(){} global::insert("naming".to_string()); global::show(); Ok(()) }
结果为
```rust name: {"Jim": "user", "James": "admin"} name: "naming" name: {"Jim": "user", "name": "naming", "James": "admin"} name: "name" ```
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!