Rust 2024 版本中的不兼容变更汇总
Rust 2024 版本已经发布,其中包含一些不兼容的变更,简单汇总如下:
-
核心语言
- 返回位置
impl Trait
生命周期捕获规则:在 2024 版本中,返回位置的impl Trait
默认捕获所有生命周期,而 2021 版本默认不捕获。 - 临时作用域更改:2024 版本调整了
if let
中临时变量的作用域,其在if
分支结束时结束,避免了借用冲突;同时缩短了尾表达式中临时变量的生命周期,减少了相关错误。 unsafe
的变化:2024 版本要求更多代码段标记为unsafe
,如extern
块、部分属性(#[no_mangle]
、#[export_name]
、#[link_section]
等),以提醒开发者注意潜在风险。- 新增保留字:2024 版本新增保留关键字
gen
,用于未来的生成器;同时保留特定的#相关语法。
- 返回位置
-
标准库
- 预导入模块更改:2024 版本将
Future
和IntoFuture
添加到预导入模块,因async
关键字已推出多年,预计对常规代码库影响较小。 - 为
Box<[T]>
添加IntoIterator
:2024 版本中Box<[T]>
实现了IntoIterator<Item = T>
,为避免破坏旧代码,之前版本中直接调用Box::<[T]>::into_iterator
会被隐藏,维持旧有行为。 - 新的不安全函数:2024 版本将
std::env::{set_var, remove_var}
和std::os::unix::process::CommandExt::before_exec
标记为不安全函数,前者在多线程环境使用存在风险,后者已被弃用且不安全。
- 预导入模块更改:2024 版本将
-
Cargo
- 2024 版本的 Cargo 有新的依赖解析器,会考虑当前 Rust 版本,虽目前存在一些问题,但未来有望改善;同时,选项命名更一致,统一使用 kebab-case;并且修复了工作区依赖中禁用默认功能的错误,若工作区未禁用默认功能,继承的依赖也不能禁用。
更多信息请参见原文:
https://bertptrs.nl/2025/02/23/rust-edition-2024-annotated.html
findfont-rs 0.1 发布
这是一个相对小众的包,用来查找字体文件,支持 Windows/macOS/Linux 系统。
Github 仓库:https://github.com/AllenDang/findfont-rs
Pake:利用 Rust 轻松构建轻量级多端桌面应用
Pake 是一个利用 Rust 构建桌面应用的工具,具有以下特征:
- 🎐 相比传统的 Electron 套壳打包,要小将近 20 倍,5M 上下。
- 🚀 Pake 的底层使用的 Rust Tauri 框架,性能体验较 JS 框架要轻快不少,内存小很多。
- 📦 不是单纯打包,实现了快捷键的透传、沉浸式的窗口、拖动、样式改写、去广告、产品的极简风格定制。
- 👻 只是一个很简单的小玩具,用 Tauri 替代之前套壳网页打包的老思路,其实 PWA 也很好。
Github 仓库:https://github.com/tw93/Pake
--
From 日报小组 Yuan YQ
社区学习交流平台订阅:
1
共 0 条评论, 1 页
评论区
写评论还没有评论