跳转到内容

Rust 快速上手

我们来把 Rust 装到你的电脑上,再写出你的第一个程序。如果你暂时不想安装任何东西,也可以先在 Rust Playground 里跟着做,以后再回到这一页。

安装 Rust 的官方方式是一个叫 rustup 的工具。它会安装 Rust 编译器和构建工具 cargo,并负责让它们保持最新。

打开 rustup.rs,按照你的系统对应的说明操作(也可以看 Rust 官网的中文安装页面):

  • Windows:下载并运行 rustup-init.exe,然后接受默认选项。

  • macOS / Linux:把下面这行粘贴到终端里:

    Terminal window
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

关掉终端再重新打开,然后运行:

Terminal window
rustc --version
cargo --version

你应该会看到类似 rustc 1.xx.0 的版本号。看到了,就说明准备就绪。

  • rustc 是 Rust 编译器(它把你的代码变成程序)。
  • cargo 是 Rust 的一站式工具,负责构建、运行、测试和管理项目。你几乎所有事情都会用 cargo 来做。

不用手动创建文件,让 cargo 帮你把项目搭好:

Terminal window
cargo new hello_rust
cd hello_rust

这会创建一个名为 hello_rust 的文件夹,里面有一个 Rust 项目需要的一切:

hello_rust/
├── Cargo.toml # 项目设置和依赖
└── src/
└── main.rs # 你的代码写在这里
  • Cargo.toml 描述你的项目(名称、版本,以及用到的库)。
  • src/main.rs 是程序的起始文件,cargo 甚至已经帮你在里面写好了一个 Hello World。

在项目文件夹里运行:

Terminal window
cargo run

你会看到 cargo 先编译项目,然后打印:

Hello, world!

就这样,你刚刚构建并运行了一个 Rust 程序。

打开 src/main.rs,你会看到:

fn main() {
println!("Hello, world!");
}
  • fn main() { ... } 定义了主函数,每个 Rust 程序都从这里开始运行。
  • println!("...") 在屏幕上打印一行文字。

试着改一下这条消息,再运行一次 cargo run:

fn main() {
println!("你好,这是我的第一个 Rust 程序!");
}

输出:

你好,这是我的第一个 Rust 程序!
▶ 动手试一试

下面这几个命令你会经常用到:

命令 作用
cargo run 编译并运行你的程序(开发时最方便)
cargo build 只编译,生成的程序放在 target/debug/ 里
cargo build --release 编译一个经过优化、运行更快的版本,用于发布

你一定会遇到编译器报错,而且天天都会,哪怕写了好几年 Rust 也一样。这并不说明你不行,而是编译器在尽职尽责。我们故意制造一个错误,这样第一次遇到时就没那么吓人了。

把 src/main.rs 里 println! 的 ! 删掉:

fn main() {
println("Hello, world!");
}

运行 cargo run,你会得到:

error[E0423]: expected function, found macro `println`
--> src/main.rs:2:5
|
2 | println("Hello, world!");
| ^^^^^^^ not a function
|
help: use `!` to invoke the macro
|
2 | println!("Hello, world!");
| +

从上往下读:

  1. 第一行说明出了什么问题:Rust 期望这里是一个函数(expected function),但 println 是一个宏(macro,下一页会讲它是什么意思)。
  2. --> src/main.rs:2:5 告诉你出错的位置:文件 src/main.rs,第 2 行,第 5 列。
  3. ^^^^^^^ 标记指向出问题的那段代码。
  4. help: 部分经常会给出修复方法。这里它甚至用一个 + 标出了漏掉的 !。

把 ! 加回去,一切又恢复正常:

fn main() {
println!("Hello, world!");
}

输出:

Hello, world!
▶ 动手试一试

第 5 步:配置你的编辑器(推荐)

Section titled “第 5 步:配置你的编辑器(推荐)”

想要最好的体验,就在编辑器里安装 rust-analyzer 扩展。它会在你打字时提供自动补全、行内报错提示和类型提示。

  • VS Code:安装 rust-analyzer 扩展
  • 其他大多数编辑器(JetBrains、Neovim 等)也支持 rust-analyzer。

让你的程序打印三行:你的名字、你最喜欢的食物,以及 我刚刚运行了 Rust!。提示:一个 println! 打印一行,所以要用三个。

查看答案
fn main() {
println!("我叫小明");
println!("我喜欢吃饺子");
println!("我刚刚运行了 Rust!");
}

输出:

我叫小明
我喜欢吃饺子
我刚刚运行了 Rust!
▶ 动手试一试

打印一个像下面这样的小横幅:标题的上方和下方各有一行 = 号。然后故意删掉一个 !,运行 cargo run,读一读报错,再把它修好。提示:= 组成的那两行也只是 println! 里的普通文字,和其他消息没什么两样。

查看答案

这里的标题保留英文:中文字符在屏幕上占两个字符宽,会让标题和 = 线对不齐。

fn main() {
println!("==============");
println!(" HELLO RUST");
println!("==============");
}

输出:

==============
HELLO RUST
==============
▶ 动手试一试
  • 从 rustup.rs 用 rustup 安装 Rust。
  • 用 rustc --version 和 cargo --version 确认安装成功。
  • 用 cargo new 创建项目,用 cargo run 运行它。
  • 一个项目包含 Cargo.toml(设置)和 src/main.rs(你的代码)。
  • 编译器报错要从上往下读:出了什么问题、在哪里,往往还有一个给出修复方法的 help:。
  • 在编辑器里装上 rust-analyzer,写代码会顺畅很多。

小测验

1. 哪个工具负责安装 Rust 编译器和 cargo,并让它们保持最新?

2. 哪个文件描述了 Rust 项目的名称、版本和依赖?

3. 哪个命令只编译程序而不运行它?

得分: 0 / 3