// 在顶层定义(类似于您现有的全局变量)
static YOUR_VARIABLE_NAME: LazyLock<Arc<Mutex<DataType>>> = LazyLock::new(|| Arc::new(Mutex::new(initial_value)));
// 示例:一个全局计数器
static GLOBAL_COUNTER: LazyLock<Arc<Mutex<u32>>> = LazyLock::new(|| Arc::new(Mutex::new(0)));
// 示例:全局字符串
static GLOBAL_STRING: LazyLock<Arc<Mutex<String>>> = LazyLock::new(|| Arc::new(Mutex::new(String::new())));
// 读取值
let value = {
let arc_mutex = YOUR_VARIABLE_NAME.clone();
let guard = arc_mutex.lock().unwrap();
*guard // 克隆或复制值
};
// 修改值
{
let arc_mutex = YOUR_VARIABLE_NAME.clone();
let mut guard = arc_mutex.lock().unwrap();
*guard = new_value;
}
// 在文件顶部(与其他全局变量一起)
static GLOBAL_FLAG: LazyLock<Arc<Mutex<bool>>> = LazyLock::new(|| Arc::new(Mutex::new(false)));
// 在函数中使用
fn some_function() -> Result<()> {
// 设置标志为true
{
let flag = GLOBAL_FLAG.clone();
let mut guard = flag.lock().unwrap();
*guard = true;
}
// 读取标志
let is_flag_set = {
let flag = GLOBAL_FLAG.clone();
let guard = flag.lock().unwrap();
*guard
};
println!("标志设置为: {}", is_flag_set);
Ok(())
}