参考书目:https://rustlang-cn.org/office/rust/book/getting-started/ch01-00-getting-started.html
开始学习rust,记录一下自己的学习内容,全程只记录Mac环境下的操作。
本文主要记录:
- 在macOS安装 Rust
- 编写一个打印 Hello, world! 的程序
- 使用 Rust 的包管理器和构建系统 cargo
一、安装
- 在macOS 上安装 rustup
打开终端并输入如下命令:
$ curl https://sh.rustup.rs -sSf | sh
这个命令等的时间可能会比较久,耐心一点。
接着出现下面的三个选项,选择1,默认安装就好了。
You can uninstall at any time with rustup self uninstall and these changes will
be reverted.
Current installation options:
default host triple: x86_64-apple-darwin
default toolchain: stable
modify PATH variable: yes
1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1
此命令下载一个脚本并开始安装 rustup 工具,这会安装最新稳定版 Rust。
如果安装成功,将会出现如下内容:
Rust is installed now. Great!
To get started you need Cargo's bin directory ($HOME/.cargo/bin) in your PATH
environment variable. Next time you log in this will be done automatically.
To configure your current shell run source $HOME/.cargo/env
按照上述提示,还要将Rust 加入系统 PATH 环境变量中,在下一次登录时生效
两种方式,任选其一即可:
- 不重启终端,在 shell 中直接运行如下命令,手动将 Rust 加入系统 PATH 变量中
上述提示中是给的这种方式,比较便捷。
$ source $HOME/.cargo/env
2.可以在 ~/.bash_profile 文件中增加如下行:
$ export PATH="$HOME/.cargo/bin:$PATH"
《另外,你需要一个某种类型的链接器(linker)。很有可能已经安装,不过当你尝试编译 Rust 程序时,却有错误指出无法执行链接器,这意味着你的系统上没有安装链接器,你需要自行安装一个。C 编译器通常带有正确的链接器。请查看你使用平台的文档,了解如何安装 C 编译器。并且,一些常用的 Rust 包依赖 C 代码,也需要安装 C 编译器。因此现在安装一个是值得的。》---这里不太懂。
- 更新和卸载
通过 rustup 安装了 Rust 之后,很容易更新到最新版本。在 shell 中运行如下更新脚本:
$ rustup update
为了卸载 Rust 和 rustup,在 shell 中运行如下卸载脚本(这个命令现在可以不用执行,不然又要重新安装一遍了。。。):
$ rustup self uninstall
- 故障排除(Troubleshooting)
要检查是否正确安装了 Rust,打开 shell 并运行如下行:
$ rustc --version
你应能看到已发布的最新稳定版的版本号、提交哈希和提交日期,显示为如下格式:
rustc x.y.z (abcabcabc yyyy-mm-dd)
如果出现这些内容,Rust 就安装成功了!
没有成功的,注意检查一下配置环境变量那一步有没有正确执行。
如果有问题,可以求助:最简单的是 irc.mozilla.org 上的 #rust IRC 频道 ,可以使用 Mibbit 来访问它。然后就能和其他 Rustacean(Rust 用户的称号,有自嘲意味)聊天并寻求帮助。其它给力的资源包括用户论坛和 Stack Overflow。
二、编写一个打印 Hello, world! 的程序
安装好了 Rust,我们来编写第一个 Rust 程序。掌握用rust语言在屏幕上打印 Hello, world!
注意:本书假设你熟悉基本的命令行操作。Rust 对于你的编辑器、工具,以及代码位于何处并没有特定的要求,如果你更倾向于使用集成开发环境(IDE),而不是命令行,请尽管使用你喜欢的 IDE。目前很多 IDE 已经不同程度的支持 Rust;查看 IDE 文档了解更多细节。最近,Rust 团队已经致力于提供强大的 IDE 支持,而且进展飞速!
- 创建项目目录
首先创建一个存放 Rust 代码的目录。建议在home目录下创建 projects 目录。
打开终端并输入如下命令创建 projects 目录,并在 projects 目录中为 Hello, world! 项目创建一个目录。
$ mkdir ~/projects
$ cd ~/projects
$ mkdir hello_world
$ cd hello_world
- 编写并运行 Rust 程序
1. 新建源文件:main.rs
$ touch main.rs
Rust 源文件总是以 .rs 扩展名结尾。
注意:如果文件名包含多个单词,使用下划线分隔它们。例如命名为
hello_world.rs
,而不是helloworld.rs
。
2. 打开main.rs
文件,输入示例 1-1 中的代码。
1)打开文件:
$ vi main.rs
2)输入示例1-1中的代码
示例 1-1: 一个打印 Hello, world! 的程序
fn main() {
println!("Hello, world!");
}
3)保存文件,并回到终端窗口。
3. 编译并运行文件
在终端窗口的~/projects
目录下输入下列命令,编译和运行文件
$ rustc main.rs
$ ./main
运行成功,会输出:
Hello, world!
如果没有看到这些输出,回到 “故障排除” 部分查找寻求帮助的方法。
如果 Hello, world!
出现了,恭喜你!你已经正式编写了一个 Rust 程序。现在你成为一名 Rust 程序员,欢迎!
- 分析 Rust 程序
几个要注意的点:
Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。
println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有!)。当看到符号 ! 的时候,就意味着调用的是宏而不是普通函数。
编译和运行是彼此独立的步骤
在运行 Rust 程序之前,必须先使用 Rust 编辑器编译它,即输入 rustc 命令并传入源文件名称,如$ rustc main.rs
。编译成功后,Rust 会输出一个二进制的可执行文件。
三、使用 Rust 的包管理器和构建系统 cargo
Cargo 是 Rust 的构建系统和包管理器。大多数 Rustacean 们使用 Cargo 来管理他们的 Rust 项目,因为它可以为你处理很多任务,比如构建代码、下载依赖库并编译这些库。(我们把代码所需要的库叫做 依赖(dependencies))。
最简单的 Rust 程序,比如我们刚刚编写的,没有任何依赖。所以如果使用 Cargo 来构建 Hello, world! 项目,将只会用到 Cargo 构建代码的那部分功能。在编写更复杂的Rust程序时,你将添加依赖项,如果使用Cargo启动项目,则添加依赖项将更容易。
- 检查 Cargo
第一部分 “安装” 的时候,自带了 Cargo。在终端输入如下命令检查是否安装了 Cargo:
$ cargo --version
如果你看到了版本号,说明已安装!如果看到类似 command not found 的错误,你应该查看相应安装文档以确定如何单独安装 Cargo。
- 使用 Cargo 创建项目
在终端输入下面的命令:
- 进入projects 目录(或者你存放代码的目录)。
$ cd ~/properties
- 使用cargo创建项目hello_cargo
新建了名为 hello_cargo 的目录,同时 Cargo 在一个hello_cargo 目录中创建了项目文件。
$ cargo new hello_cargo
- 进入项目目录查看文件
$ cd hello_cargo
$ ll
进入 hello_cargo 目录并列出文件,看到Cargo生成的项目目录结构如下:
.
├── Cargo.toml
└── .git/
└── .gitignore
└── src
└── main.rs
一个 Cargo.toml 文件,一个 src 目录,以及位于 src 目录中的 main.rs 文件。它也在 hello_cargo 目录初始化了一个 git 仓库,以及一个 .gitignore 文件。
现在打开 src/main.rs ,可以看到Cargo 为你生成了一个 Hello World! 程序,正如我们之前编写的示例 1-1!目前为止,之前项目与 Cargo 生成项目的区别是 Cargo 将代码放在 src 目录,同时项目根目录包含一个 Cargo.toml 配置文件。
- 分开执行命令,构建和运行项目
1)构建
在 hello_cargo 目录下,输入下面的命令来构建项目:
$ cargo build
编译完成后会创建一个可执行文件 target/debug/hello_cargo
,注意文件位置。
2)运行可执行文件:
$ ./target/debug/hello_cargo
- 一个命令中同时编译并运行项目
可以使用cargo run
在一个命令中同时编译并运行生成的可执行文件:
$ cargo run
- 快速检查代码
Cargo 还提供了一个叫 cargo check 的命令。该命令快速检查代码确保其可以编译,但并不产生可执行文件:
$ cargo check
所以编写代码时定期运行 cargo check 确保它们可以编译。当准备好使用可执行文件时才运行 cargo build。
- 发布(release)构建
当项目最终准备好发布时,可以使用cargo build --release
来优化编译项目。
这会在 target/release 而不是 target/debug 下生成可执行文件。
$ cargo build --release