最近,Rust 1.88.0 稳定版发布了,带来了一些非常实用的更新。
在开始介绍新功能前,先说一下如何升级,打开ServBay,在「软件包」中找到Rust,点击橙色升级按钮就可以升级了,省去了敲命令和处理环境问题的麻烦。如果你也想简化这个过程,可以试试ServBay。
好了,我们来看看 Rust 1.88.0 到底更新了些什么。
新功能亮点介绍
let 链:让条件判断代码更整洁
如果你写过 Rust,很可能遇到过 if let 多层嵌套的问题。为了从一个嵌套的枚举或结构体里取值,代码会一层包一层,可读性很差。
以前我们可能这么写:
// 之前的写法,嵌套比较深
if let Channel::Stable(v) = release_info() {
if let Semver { major, minor, .. } = v {
if major == 1 && minor == 88 {
println!("需要好几层才能判断完...");
}
}
}
现在,1.88.0 版本带来的 let 链 (Let Chains) 解决了这个问题。它允许你在 if 或 while 语句里用 && 把多个 let 判断串联起来。
现在可以这样写:
// 使用 let 链,代码更扁平
if let Channel::Stable(v) = release_info()
&& let Semver { major, minor, .. } = v
&& major == 1 && minor == 88
{
println!("let_chains 让代码逻辑清晰多了。");
}
可以看到,代码逻辑变得更加线性,可读性好了很多。
需要注意的是,let 链这个特性需要在 Rust 2024 Edition 中才能使用,所以如果想用的话,记得去 Cargo.toml 里更新一下你的 edition。
Cargo 自动缓存清理:解决硬盘空间占用问题
用过一段时间 Rust 的朋友都知道,~/.cargo 目录会越来越大,因为它缓存了所有下载过的依赖。时间长了,能占用几十个 G 的硬盘空间,需要我们手动去清理。
1.88.0 版本终于内置了自动缓存清理功能,我觉得这个功能非常实用。它的清理规则很简单:
-
从网上下载的依赖包,如果 3 个月没被访问过,就会被删除。
-
本地的依赖(比如 git 依赖),如果 1 个月没被访问过,就会被删除。
有了这个功能,我们基本就不用再担心 Cargo 缓存占用太多硬盘空间了。
裸函数 (Naked Functions)
对于需要进行底层开发的开发者,比如写操作系统内核或者嵌入式程序,这次新增的裸函数 (#[unsafe(naked)]) 是个有用的新选项。开发者编写一个完全由自己控制的函数,编译器不会添加任何额外的汇编代码(比如函数头和函数尾)。这就可以用内联汇编对函数实现完全的控制,这在特定场景下非常关键。
其他更新
还有一些小但有用的更新,比如:
-
布尔配置:现在可以在
cfg属性里直接写cfg(true)或cfg(false),比以前的cfg(all())更直观。 -
API 稳定化:
HashMap::extract_if,Cell::update等一批 API 转正稳定了,可以放心在项目里使用。
如何用 ServBay 升级到 Rust 1.88.0?
前面提到了我用 ServBay 来管理版本,这里简单说下具体步骤,真的很简单:
- 打开 ServBay 软件。
- 在左边的服务列表里找到「软件包」。
- 在语言列表里就能看到 Rust,点击旁边的橙色按钮升级
如果你还没有安装ServBay,又想试试的话,可以去官网(www.servbay.com)下载
下载完后,来到在左边的服务列表里找到「软件包」,找到Rust,点击绿色按钮下载即可。
整个过程都是图形化操作,不需要命令行。我喜欢用 ServBay 的主要原因就是:
-
图形化管理:免去记忆和输入命令的麻烦,特别是当你在多种语言(比如Python和Golang)之间切换时,有个统一的管理界面很方便。
-
环境隔离:不同版本的工具和语言可以共存,互不影响,方便为不同项目配置环境。
总结
总的来说,Rust 1.88.0 是个很实用的版本。let 链和 Cargo 自动清理这两个功能,直接解决了我们日常开发中遇到的具体问题,能实实在在地提升开发体验。
如果你想省心省力地体验这些新特性,我推荐试试用 ServBay 来安装和管理你的 Rust 版本。这样你可以把更多时间花在写代码上,而不是折腾环境。希望这篇文章对你有帮助。