安装

通过一个叫作rustup的命令行工具来完成Rust的下载与安装,这个工具还被用来管理不同的Rust发行版本及其附带的工具链。

在Linux或macOS环境中安装Rust

命令行终端输入:

1
$ curl https://sh.rustup.rs -sSf | sh

上面的安装过程会自动将Rust工具链添加到环境变量PATH中,并在下一次登录终端时生效。假如你想要立即开始使用Rust而不用重新启动终端,那么你可以在终端中运行如下所示的命令来让配置立即生效:

1
$ source $HOME/.cargo/env

在Windows环境中安装Rust

访问官网查看详细的安装方法。

更新与卸载

更新:

1
$ rustup update

卸载:

1
$ rustup self uninstall

查看版本

1
$ rustc --version

本地文档

安装工具在执行的过程中会在本地生成一份离线的文档,你可以通过命令rustup doc在网页浏览器中打开它。

1
$ rustup doc

Hello, World!

创建一个文件夹

首先,创建一个文件夹来存储编写的Rust代码。通常而言,Rust不会限制我们存储代码的位置,但是一般建议你创建一个可以集合所有项目的根文件夹存放所有的rust项目代码。

1
2
> mkdir hello_world
> cd hello_world

编写并运行一个Rust程序

接下来,创建一个名为main.rs的源文件。在命名规则上,Rust文件总是以.rs扩展名结尾。如果在名字中使用了多个单词,那么你可以使用下画线来隔开它们。比如你最好使用hello_world.rs作为文件名而不是helloworld.rs

main.rs

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

然后保存文件并回到终端窗口。在Linux或macOS系统中,你可以通过输入如下所示的命令来编译并运行这个文件:

1
2
3
$ rustc main.rs
$ ./main
Hello, world!

在Windows系统中,你需要将上面命令中的./main替换为.\main.exe

1
2
3
> rustc main.rs
> .\main.exe
Hello, world!

使用cargo

Cargo是Rust工具链中内置的构建系统及包管理器。

使用Cargo创建一个项目

使用Cargo创建一个新的项目,并与之前的“Hello, world!”项目做一个对比,来看一看它们之间有何异同。将当前的目录跳转至projects文件夹(或者你用来存储项目的任意位置),然后运行如下所示的命令:

1
2
$ cargo new hello_cargo 
$ cd hello_cargo

一条命令会创建一个名为hello_cargo的项目。由于我们将这个项目命名为hello_cargo,所以Cargo会以同样的名字创建项目目录并放置它生成的文件。

现在,进入hello_cargo文件夹,可以看到Cargo刚刚生成的两个文件与一个目录:一个名为Cargo.toml的文件,以及一个名为main.rs的源代码文件,该源代码文件被放置在src目录下。与此同时,Cargo还会初始化一个新的Git仓库并生成默认的.gitignore文件。

Cargo.toml

Cargo使用TOML(Tom’s Obvious, Minimal Language)作为标准的配置格式。

1
2
3
4
5
6
7
8
[package]
name = "hello_cargo"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

首行文本中的[package]是一个区域标签,它表明接下来的语句会被用于配置当前的程序包。

紧随标签后的3行语句提供了Cargo编译这个程序时需要的配置信息,它们分别是程序名、版本号及作者信息。在Cargo生成Cargo.toml的过程中,它会尝试着从环境变量中获得你的名字与电子邮箱,但如果这些生成的信息与实际情况不符,你也可以直接修改并保存这个文件。

最后一行文本中的[dependencies]同样是一个区域标签,它表明随后的区域会被用来声明项目的依赖。在Rust中,我们把代码的集合称作包(crate)。

src/main.rs

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

Cargo帮我们生成了一个输出“Hello, world!”的小程序。到目前为止,Cargo生成的项目与在上一节中手动生成的项目相比,其区别就是源文件main.rs被放置到了src目录下,并且在项目目录下多了一个叫作Cargo.toml的配置文件。

同样按照惯例,Cargo会默认把所有的源代码文件保存到src目录下,而项目根目录只被用来存放诸如README文档、许可声明、配置文件等与源代码无关的文件。使用Cargo可以帮助你合理并一致地组织自己的项目文件,从而使一切井井有条。

使用Cargo构建和运行项目

在当前的hello_cargo项目目录下,Cargo可以通过下面的命令来完成构建任务:

1
cargo build

这个命令会将可执行程序生成在路径target/debug/hello_ cargo(或者Windows系统下的target\debug\hello_cargo.exe)下。生成可直接执行的二进制文件。

也可以简单地使用cargo run命令来依次完成编译和运行任务:

1
2
3
4
5
D:\Github\rust\hello_cargo>cargo run
Compiling hello_cargo v0.1.0 (D:\Github\rust\hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.47s
Running `target\debug\hello_cargo.exe`
Hello, world!

Cargo还提供了一个叫作cargo check的命令,你可以使用这个命令来快速检查当前的代码是否可以通过编译,而不需要花费额外的时间去真正生成可执行程序:

1
2
3
D:\Github\rust\hello_cargo>cargo check
Checking hello_cargo v0.1.0 (D:\Github\rust\hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.08s

事实上,大部分Rust用户在编写程序的过程中都会周期性地调用cargo check以保证自己的程序可以通过编译,只有真正需要生成可执行程序时才会调用cargo build,这样避免重复编译带来的时间开销。

以Release模式进行构建

使用命令cargo build --release在优化模式下构建并生成可执行程序。它生成的可执行文件会被放置在target/release目录下,而不是之前的target/debug目录下。这种模式会以更长的编译时间为代价来优化代码,从而使代码拥有更好的运行时性能。这也是存在两种不同的构建模式的原因。一种模式用于开发,它允许你快速地反复执行构建操作。而另一种模式则用于构建交付给用户的最终程序,这种构建场景不会经常发生,但却需要生成的代码拥有尽可能高效的运行时表现。值得指出的是,假如你想要对代码的运行效率进行基准测试,那么请确保你会通过cargo run –release命令进行构建,并使用target/release目录下的可执行程序完成基准测试