【Rust日报】2023-12-26 逐步废弃并最终移除 Rust 中 static mut 语法的提案

逐步废弃并最终移除 Rust 中 static mut 语法的提案

在 Rust Internals 论坛上,有一个关于逐步废弃并最终移除 Rust 中 static mut 语法的提案(Pre—RFC),提议在 2024 年 Rust 版本中开始废弃 static mut 的使用,并在 2027 年版本中完全移除这个语法。(这个提案不涉及 &'static mut)。

主要的动机是:

  1. 现有的 static mut 特性难以正确使用(很容易获得别名的独占引用或由于对 static mut 声明的变量进行非同步访问而遇到未定义行为(UB)),并且由于内部可变性生态系统的扩展,static mut 正变得多余。

  2. static mut 旨在提供可以在初始值设置后修改的静态变量。然而,使用 static mut 可能会导致问题,例如违反 Rust 的借用规则,产生两个对同一数据的独占引用,或在多线程中导致数据竞争和未定义行为。

作者建议使用 std::cell::SyncUnsafeCell<T> 替代 static mut,以提高代码的安全性和可审计性。SyncUnsafeCell 虽然仍然是不安全的,但它使得某些原本在 static mut 上不安全的操作(如获取静态的原始指针)变得安全,同时 2024 年 Rust 版本中通过警告(或默认拒绝的 lint)提示 static mut 的废弃,并在 2027 年版本中将其作为硬语法错误处理。这样可以使代码迁移到更安全的版本,并更容易审计潜在的错误。

同时,github 上也有两个关于 static m

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值