M3ngL

Rust编译器切换版本

环境:WSL2 ubuntu 20.04.6LTS

Rust编译器即rustc,由rustup统一管理该编译器的版本等信息。因此rustup尽量保持最新版本,使用rustup check查看该工具的版本情况

$ rustup check
stable-x86_64-unknown-linux-gnu - Update available : 1.87.0 (17067e9ac 2025-05-09) -> 1.88.0 (6b00bc388 2025-06-23)
rustup - Up to date : 1.28.2

若需要更新则,调用rustup update

但rust项目实际编译时使用命令工具的是cargo,这是因为cargo是rustc的封装上层工具。

cargo可以自行根据.toml文件生成.lock配置文件,相当于c++的MakeFile文件到cmake.txt

因此当rustc编译器切换版本时,实际上cargo也会自动切换到相应版本上。

$Method$

确定要切换的版本

rustup工具在终端中无法直接列出相关版本号信息,只能直接指定版本,如nightly-2024-10-24或者1.80.0

可以通过官方网站查询最新的版本号记录

https://rust-lang.github.io/rustup-components-history/x86_64-unknown-linux-gnu.html

相关版本号,以及每个版本的改动细节

https://releases.rs/

安装指定版本

编译器版本有如下命名格式

  • 发行版本

    • Nightly(开发版),master开发分支上日更的版本

    • Beta(预览版),每隔一段时间从master开发分支上分支出来的版本

    • Stable(稳定版)

  • 语义化版本 (主版本号.次版本号.修订号,依次用.隔开),格式:x.x.x-<发行版本>

    • 主版本号:当做了不兼容的 API 修改

    • 次版本号:当做了向下兼容的功能性新增

    • 修订号:当做了向下兼容的问题修正

  • 时间版本,格式:<发行版本>-year-month-day

发行版本是起主要区分作用的发行通道

语义化版本和时间版本是在发行版本上进一步区分的,后两者区分作用几乎等价

指定发行版本

指定发行版本,这样会默认选择目前最新的发行版本

rustup install stable

image-20250803095508788

指定时间版本

仅指定时间是无法找到对应具体版本的,得加上发行版本名称

rustup install nightly-2024-10-24

rustup install 2024-10-24会报错

image-20250803110244792

指定语义化版本

指定语义化版本

rustup install 1.80.0

默认是下载的Stable发行版本

也可以在之后加上发行版本名称,如

rustup install 1.80.0-beta

切换到该版本

切换方式有几种,根据作用时限分为临时性的和永久性的

临时切换

有两种方式,在终端编译时指定版本,或者在项目中创建新的配置文件规定编译该rust项目的编译器版本

  • 终端输入编译命令时,指定编译器版本
cargo +stable-x86_64-unknown-linux-gnu build
  • 在要编译的rust项目根目录中创建 rust-toolchain.toml 文件,写入
[toolchain]
channel = "stable-x86_64-unknown-linux-gnu"

然后直接编译 cargo build,即是使用的指定编译器版本进行编译,在该项目中调用cargo或者rustc等其他工具也是自动切换成对应版本

永久切换

切换default编译器,在项目中未专门指定编译器版本的情况下会默认使用该编译器版本

rustup default nightly-2024-10-24

验证结果

检查当前的default编译器

rustc --version
cargo --version

image-20250803103938707

可以发现rust相关工具的版本都统一切换了。


查看下载的所有编译器版本

rustup toolchain list

image-20250803103831526

通过发行版本下载的编译器,通过rustup toolchain list展示的名称看不出来具体是什么版本,可以使用以下命令进一步查看其版本细节

rustup +stable-x86_64-unknown-linux-gnu --version

image-20250803095647930

除此以外,通过该命令展现的版本号,也能区分当前是哪个发行版本下的

  • Stable版本,展现的版本名称rustc x.xx.x
  • Nightly版本,展现的版本名称rustc x.xx.x-nightly
  • beta版本,展现的版本名称rustc x.xx.x-beta.x

rust其他相关工具

  • rustfmt:Rust 代码格式化工具。它会根据一套标准的 Rust 风格指南自动格式化你的代码。使用 rustfmt 可以确保团队中所有人的代码风格一致,从而提高可读性和协作效率。你可以在命令行运行 cargo fmt 来使用它。
  • rustdoc: Rust 文档生成器。它读取你的 Rust 源代码中的注释,并将其转换为 HTML 格式的文档网站。这是 Rust 社区中非常重要的一部分,所有官方库的文档都是用 rustdoc 生成的。你可以通过 cargo doc 命令来生成项目文档。
  • rust-analyzer:作用: Rust 语言服务器。这是一个强大的 IDE 工具,它为 VS Code、Emacs、Vim 等编辑器提供语言支持,包括代码自动补全、类型提示、错误检查、跳转到定义等功能。它能让你的编码体验更加流畅,通常由编辑器插件自动调用。
  • rust-gdb 和 rust-lldb:Rust 调试器。它们是 gdblldb 的封装,提供了对 Rust 代码更好的支持,比如可以正确显示 Rust 变量的类型和值。这些工具主要用于在程序崩溃或行为异常时进行调试。
  • Clippy 是Rust 官方提供的代码检查lint 工具,通过静态分析,来检查代码中有问题或不符合指定规范的代码。

$Reference$

https://rustwiki.org/zh-CN/book/appendix-07-nightly-rust.html

https://rustwiki.org/zh-CN/edition-guide/rust-2018/rustup-for-managing-rust-versions.html

https://www.cnblogs.com/ysocean/p/16528078.html

https://www.cnblogs.com/rustln/p/15951813.html

📑
目录