全局变量
使用 lazy_static 在运行期初始化全局变量
下面的例子,我们将使用 lazy_static 声明一个在运行期初始化( 懒求值 )的 Hashmap
,它会被求值一次,然后保存在一个全局的 static
引用之后。
use lazy_static::lazy_static; use std::collections::HashMap; lazy_static! { static ref PRIVILEGES: HashMap<&'static str, Vec<&'static str>> = { let mut map = HashMap::new(); map.insert("James", vec!["user", "admin"]); map.insert("Jim", vec!["user"]); map }; } fn show_access(name: &str) { let access = PRIVILEGES.get(name); println!("{}: {:?}", name, access); } fn main() { let access = PRIVILEGES.get("James"); println!("James: {:?}", access); show_access("Jim"); }