rust 全局变量片段

// 在顶层定义(类似于您现有的全局变量)
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(())
}

  

posted @ 2025-08-05 09:14  CrossPython  阅读(12)  评论(0)    收藏  举报