如何在 Rust 中创建全局可变的单例?
大家好!
我是 Rust 新手,正在尝试为我的应用实现全局配置。我需要能够从代码的任何位置读取和修改设置(例如日志级别或文件路径)。在其他语言中,我只需使用静态变量,但在 Rust 中这更复杂。
以下是我尝试过的:
```rust
static CONFIG: Config = Config { logging: false };
struct Config {
logging: bool,
}
fn main() {
CONFIG.logging = true; // 错误:不能赋值给不可变的 static
}
```
编译器报错说 static 是不可变的。我尝试了 `static mut`,但它需要 `unsafe`:
```rust
static mut CONFIG: Config = Config { logging: false };
fn main() {
unsafe {
CONFIG.logging = true; // 可以工作,但使用了 unsafe
}
}
```
但到处使用 `unsafe` 似乎不正确。另外,我听说过线程问题——我的应用是多线程的。有没有安全的方法来创建一个全局单例,并且可以修