当你开始学习 Rust 时,很快就会遇到 Cargo
,它是 Rust 生态系统中用于构建和运行 Rust 应用程序的标准工具。在 《Rust 易学教程》 首篇中,我会简要概述一下 Cargo 是什么,以及它如何适应更广泛的生态系统。
请按照 https://rustup.rs/ 上的说明操作。在终端中运行以下命令,然后按照说明操作。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
这将提供 Cargo 构建工具(Cargo)和 Rust 编译器(rustc
)。同时,你还将获得 rustup
,它是一个命令行程序,你可以使用它安装不同的编译器版本。
在安装 Rust 之后,你应该配置你的编辑器或IDE来使用 Rust。大多数编辑器通过与rust-analyzer
来实现这一点,rust-analyzer
为VS Code、Emacs、Vim/Neovim和许多其他编辑器提供自动完成和跳转到定义功能。还有一个你可能没听说的 IDE 叫做[RustRover](https://www.jetbrains.com/rust/)
。
在 Debian/Ubuntu 上,你也可以通过 apt 安装 Cargo、Rust 源代码和 Rust 格式化程序。然而,这会让你得到一个过时的 Rust 版本,并可能导致意想不到的行为。命令如下:
sudo apt install cargo rust-src rustfmt
Rust 的生态系统由许多工具组成,其中主要的是:
rustc
: Rust 编译器,将 .rs
文件转换为二进制文件和其他中间格式。cargo:
Rust 依赖管理器和构建工具。Cargo 知道如何下载依赖项(通常托管在 https://crates.io
上),并且在构建项目时将它们传递给 rust。Cargo 还带有一个内置的测试运行器,用于执行单元测试。rustup
:Rust 工具链安装程序和更新程序。此工具用于在发布新版本的 Rust 时安装和更新 Rust 和 cargo。此外,rust 还可以下载标准库的文档。你可以同时安装多个版本的 Rust,并且 Rust 可以让你根据需要在它们之间进行切换。更多阅读,请参考官方的 Cargo 手册。
《Rust 易学教程》 中,我们将主要通过可以通过浏览器执行的示例来探索 Rust 语言。这样能使得配置更容易,并确保每个人都有一致的体验。
但我仍然鼓励你安装 Cargo: 它将使你更容易进行练习。在教程的最后一部分,我们将做一个更大的练习,向你展示如何使用依赖关系,为此需要使用到 Cargo。
fn main() {
println!("Edit me!");
}
如果你想在自己的电脑上试验这些代码,你需要首先安装Rust。按照 Rust Book 中的说明进行操作。在撰写本教程时,最新的稳定 Rust 版本号如下:
% rustc --version
rustc 1.69.0 (84c898d65 2023-04-16)
% cargo --version
cargo 1.69.0 (6e9a83356 2023-04-12)
你也可以使用任何更高的版本,因为 Rust 保持向后兼容性。
在此基础上,按照以下步骤从本文中的一个示例构建 Rust 二进制文件:
cargo new exercise
为你的代码创建一个新的 exercise/
目录:$ cargo new exercise
Created binary (application) `exercise` package
exercise/
并使用 cargo run
来构建和运行二进制文件:$ cd exercise
$ cargo run
Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
Finished dev [unoptimized + debuginfo] target(s) in 0.75s
Running `target/debug/exercise`
Hello, world!
src/main.rs
中的代码。例如:fn main() {
println!("Edit me!");
}
cargo run
来构建并运行更新后的二进制文件:$ cargo run
Compiling exercise v0.1.0 (/home/mgeisler/tmp/exercise)
Finished dev [unoptimized + debuginfo] target(s) in 0.24s
Running `target/debug/exercise`
Edit me!
cargo check
快速检查项目的错误,使用 cargo build
编译它而不运行它。对于正常的调试构建,将在 target/debug/
中找到输出。使用 cargo build -release
在 target/release/
中生成一个优化的 release build
。Cargo.toml
为你的项目添加依赖项。当运行 cargo
命令时,它将自动为你下载并编译缺少的依赖项。