Avatar ·

可以在Rust中使用全局变量吗?如何声明全局状态?

你好!我写Rust已经几周了,遇到了一个问题。我需要存储应用程序配置和一个请求计数器,这些要从不同模块访问。在C++中,我会这样做: ```rust // 我的尝试(无法编译) static COUNTER: i32 = 0; static CONFIG: HashMap = HashMap::new(); fn increment() { COUNTER += 1; // 错误:无法赋值给不可变的static } fn main() { CONFIG.insert("host".to_string(), "localhost".to_string()); // 错误 println!("{}", COUNTER); } ``` 编译器报错关于可变性,并且对于`HashMap`说了一些关于`const fn`和分配的问题。我读到在Rust中全局变量很复杂,但如何做共享设置呢?我需要: 1. 一个简单的计数器,可以从不同线程递增。 2. 配置(HashMap),在启动时填充,之后只读取。 3. 一个记录到文件的logger,需要初始化一次。 尝试过`lazy_static!`——没有完全理解。帮帮我。