< 返回版块

Yuan YQ 发表于 2025-02-25 12:45

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 版本将 FutureIntoFuture 添加到预导入模块,因 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 标记为不安全函数,前者在多线程环境使用存在风险,后者已被弃用且不安全。
  • 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 页