安装
通过一个叫作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 | > mkdir hello_world |
编写并运行一个Rust程序
接下来,创建一个名为main.rs
的源文件。在命名规则上,Rust文件总是以.rs
扩展名结尾。如果在名字中使用了多个单词,那么你可以使用下画线来隔开它们。比如你最好使用hello_world.rs
作为文件名而不是helloworld.rs
。
main.rs
1 | fn main() { |
然后保存文件并回到终端窗口。在Linux或macOS系统中,你可以通过输入如下所示的命令来编译并运行这个文件:
1 | $ rustc main.rs |
在Windows系统中,你需要将上面命令中的./main
替换为.\main.exe
:
1 | > rustc main.rs |
使用cargo
Cargo
是Rust工具链中内置的构建系统及包管理器。
使用Cargo创建一个项目
使用Cargo创建一个新的项目,并与之前的“Hello, world!”项目做一个对比,来看一看它们之间有何异同。将当前的目录跳转至projects文件夹(或者你用来存储项目的任意位置),然后运行如下所示的命令:
1 | $ cargo new 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 | [package] |
首行文本中的[package]
是一个区域标签,它表明接下来的语句会被用于配置当前的程序包。
紧随标签后的3行语句提供了Cargo编译这个程序时需要的配置信息,它们分别是程序名、版本号及作者信息。在Cargo生成Cargo.toml的过程中,它会尝试着从环境变量中获得你的名字与电子邮箱,但如果这些生成的信息与实际情况不符,你也可以直接修改并保存这个文件。
最后一行文本中的[dependencies]
同样是一个区域标签,它表明随后的区域会被用来声明项目的依赖。在Rust中,我们把代码的集合称作包(crate)。
src/main.rs
1 | fn main() { |
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 | D:\Github\rust\hello_cargo>cargo run |
Cargo还提供了一个叫作cargo check
的命令,你可以使用这个命令来快速检查当前的代码是否可以通过编译,而不需要花费额外的时间去真正生成可执行程序:
1 | D:\Github\rust\hello_cargo>cargo check |
事实上,大部分Rust用户在编写程序的过程中都会周期性地调用cargo check以保证自己的程序可以通过编译,只有真正需要生成可执行程序时才会调用cargo build,这样避免重复编译带来的时间开销。
以Release模式进行构建
使用命令cargo build --release
在优化模式下构建并生成可执行程序。它生成的可执行文件会被放置在target/release
目录下,而不是之前的target/debug
目录下。这种模式会以更长的编译时间为代价来优化代码,从而使代码拥有更好的运行时性能。这也是存在两种不同的构建模式的原因。一种模式用于开发,它允许你快速地反复执行构建操作。而另一种模式则用于构建交付给用户的最终程序,这种构建场景不会经常发生,但却需要生成的代码拥有尽可能高效的运行时表现。值得指出的是,假如你想要对代码的运行效率进行基准测试,那么请确保你会通过cargo run –release命令进行构建,并使用target/release目录下的可执行程序完成基准测试。