Rust 1.88.0 更新详解:轻松上手 let 链与自动缓存清理

199 阅读4分钟

最近,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) 解决了这个问题。它允许你在 ifwhile 语句里用 && 把多个 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 来管理版本,这里简单说下具体步骤,真的很简单:

  1. 打开 ServBay 软件
  2. 在左边的服务列表里找到「软件包」。
  3. 在语言列表里就能看到 Rust,点击旁边的橙色按钮升级

如果你还没有安装ServBay,又想试试的话,可以去官网(www.servbay.com)下载

下载完后,来到在左边的服务列表里找到「软件包」,找到Rust,点击绿色按钮下载即可。

整个过程都是图形化操作,不需要命令行。我喜欢用 ServBay 的主要原因就是:

  • 图形化管理:免去记忆和输入命令的麻烦,特别是当你在多种语言(比如Python和Golang)之间切换时,有个统一的管理界面很方便。

  • 环境隔离:不同版本的工具和语言可以共存,互不影响,方便为不同项目配置环境


总结

总的来说,Rust 1.88.0 是个很实用的版本。let 链和 Cargo 自动清理这两个功能,直接解决了我们日常开发中遇到的具体问题,能实实在在地提升开发体验。

如果你想省心省力地体验这些新特性,我推荐试试用 ServBay 来安装和管理你的 Rust 版本。这样你可以把更多时间花在写代码上,而不是折腾环境。希望这篇文章对你有帮助。