引言:为什么你的 Cargo 可能过时了?
你是否曾经运行过 cargo build,却收到一个奇怪的错误?或者,你期待已久的 Rust 新功能就是无法正常工作?熟悉的情况:你打开 Stack Overflow,寻找解决方案,那里建议你更新 Cargo。但该怎么做呢?因为 Rust 中没有 cargo update --self 命令(老实说,那也太简单了)。
在本文中,我们将解析一个拥有数千浏览量的真实问题:"Is there a command to update Cargo to the latest official release?"。我们不仅会给出一个干巴巴的命令——我们将走完从问题到解决方案的整个过程,包括代码示例、技巧和典型错误。如果你至少写了一周的 Rust,这些信息将为你节省数小时的搜索时间。
我们开始吧!🚀
什么是 Cargo,为什么需要更新它?
Cargo 不仅仅是一个包管理器。它是 Rust 生态系统的核心。它负责构建、测试、发布 crate,当然还有管理依赖项。每个新的 Cargo 版本都会带来改进:更快的编译、新的命令、安全修复。
例如,在 Cargo 1.70 版本中,内置了对 cargo info 的支持,而在 1.75 版本中,改进了错误输出。如果你停留在旧版本,你就无法获得这些功能。此外,某些 crate 开始需要最新的 Cargo,你的项目将无法构建。
但有一个细微差别:Cargo 不会自行更新。它绑定到编译器 rustc,而 rustc 又绑定到工具 Rustup。记住这个链条:Rustup → rustc → Cargo。更新其中一个,你就更新了全部。
为什么没有 cargo update --self 命令?
这是 Stack Overflow 上的一个常见问题。原因是 Cargo 不是一个独立的程序,而是 Rust 包的一部分。当你通过 Rustup 安装 Rust 时,你会获得同一版本的 rustc、cargo 和其他工具。因此,cargo update 命令确实存在,但它更新的是你项目的依赖项,而不是 Cargo 本身。
这是新手的一个典型错误:
# 这不会更新 Cargocargo update# 这只会更新 Cargo.lock 中的依赖项要更新 Cargo 本身,需要另一种方法。而且很简单——使用 Rustup。
主要方法:通过 Rustup 更新
Rustup 是官方的 Rust 安装程序和版本管理器。如果你通过 rustup.rs 安装了 Rust,那么你已经拥有了这个工具。如果没有——现在是时候安装了:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh安装后,检查当前版本:
rustc --versioncargo --version现在,要将所有内容更新到最新的稳定版本,请执行一个命令:
rustup update此命令会将 rustc、cargo 和所有相关工具更新到最新的稳定版本。输出将类似于:
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'info: latest update on 2024-01-25, rust version 1.75.0 (8e3999b4e 2024-01-25)info: downloading component 'cargo'info: installing component 'cargo'完成!现在你的 Cargo 是最新版本了。
更新后检查
确认更新是否成功总是有好处的。编写一个简单的 Rust 程序并构建它:
// main.rsfn main() { println!("Cargo version: {}", env!("CARGO_PKG_VERSION")); // 检查新功能是否工作 #[cfg(version_ge(1, 75))] println!("你正在使用 Cargo 1.75+!");}构建并运行:
cargo run如果一切正常,你就准备好了。如果没有——请检