10、Rust 中的全局状态管理与宏编程

Rust 中的全局状态管理与宏编程

1. Rust 中的全局状态管理

在 Rust 里处理全局状态颇具挑战性,直接操作可能会带来诸多问题。例如,使用 thread_local! 宏定义全局状态时,代码会变得复杂且易出错。

thread_local! {
    static POPULAR_BABY_NAMES_2021: Arc<Mutex<Option<Vec<String>>>> =
        Arc::new(Mutex::new(None));
}

要初始化这个全局状态,需要在代码里(如 main() 函数)进行如下操作:

let arc = POPULAR_BABY_NAMES_2021.with(|arc| arc.clone());
let mut inner = arc.lock().expect("unable to lock mutex");
*inner = Some(vec![
    String::from("Olivia"),
    String::from("Liam"),
    String::from("Emma"),
    String::from("Noah"),
]);

这种做法不仅代码繁琐,而且在初始化全局数据时必须格外谨慎,要保证在其他代码访问这些值之前正确地按顺序完成初始化。

为了更便捷地处理全局状态,我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值