Rust 跟 C/C++ 一样都是编译语言,拥有解释型语言不可比拟的性能,但是同时 Rust 又让编程变得有趣。本节是 Rust 语言入门第一课,主要介绍安装和编译项目的基本技巧,如果你有过使用 C/Ruby 这些语言的经历,这里的内容会显得非常的简单,对于没有编程经验的朋友文中也给出了拓展学习材料。
我这里使用的是 Mac 系统,下面来演示一下如何来进行 rust 编译环境的安装。其他平台可以参考官方文档的说明 https://doc.rust-lang.org/book/second-edition/ch01-01-installation.html 。
首先要安装 rustup 然后通过 rustup 来安装 rust 语言。rustup 是 rust 语言的 installer https://www.rust-lang.org/zh-CN/install.html 。
curl https://sh.rustup.rs -sSf | sh
如果遇到 linker 相关的问题,可以尝试安装 C 编译环境,例如 xcode 。
打开一个新命令行窗口。
$ rustc --version
rustc 1.30.1 (1433507eb 2018-11-07)
执行命令,如果看到版本号的输出,表示 rustc ,也就是 rust 语言的编译器就安装好了。
接下来编译一个简单的 rust 项目。注意,文件名用下滑线来连接多个单词,例如要写成 hello_world.rs ,不要写成 helloworld.rs 。
创建一个 main.rs 。
fn main() {
println!("Hello, world!");
}
定义了一个函数 main ,其他的地方跟 C 语言是非常像的,比较让人奇怪的是 println!
这里的 !
。这里需要说明的是有叹号就是一个 Rust 的宏,macro 。没有叹号就是一个普通的函数调用了。关于这些语句的详细解释,可以参考这篇文档 https://doc.rust-lang.org/book/second-edition/ch01-02-hello-world.html 。
$ rustc main.rs
跟 Python/JS/Ruby 这些运行在解释器上的解释型语言不通,Rust 跟 C/C++ 类似,是编译型语言,所以需要先编译,得到二进制可执行文件然后才能执行。
$ ls
main main.rs
运行 ls 命令,可以看到多了一个文件 main 。
$ ./main
Hello, world!
命令行中执行一个可执行文件,需要添加明确的路径。例如 main 在当前位置,路径就是 ./
,所以 ./
后面跟上可执行文件的名字 main
就可以执行文件,看到输出了。
对于单文件的小项目,直接用 rustc 编译即可。但是真实的 Rust 程序一般都是用 Cargo 来管理的。Cargo 既是 Rust 的编译工具也是包管理工具。通过 rustup 安装了 rust 之后,cargo 命令就自动安装好了。
cargo --version
运行命令,如果能正确输出版本号,证明 cargo 就安装好了。
cargo new hello_cargo --bin
创建一个名为 hello_cargo
的新项目。--bin
参数的作用是保证编译输出是一个可执行文件,而不是一个库。进入项目文件夹,发现 cargo 已经帮我们做好了基本的 git 配置。并且,新建了一个 Cargo.toml 文件来存放项目的配置信息,例如项目名,作者,依赖等。toml 是一种编程语言 https://github.com/toml-lang/toml 的名字,暂时不必关心。另外还创建了一个 rust 源码文件, src/main.rs 。
$ cd hello_cargo
$ cargo build
进入 hello_cargo 文件夹,要编译项目就执行 cargo build
命令。这个命令的最重要的输出是一个可执行文件 target/debug/hello_cargo
。
$ ./target/debug/hello_cargo
Hello, world!
输入完整路径就可以执行这个文件,看到输出了。
首次运行 cargo build
输出内容中包含一个 Cargo.lock 的文件,里面是项目依赖包的精确版本号,使用过包管理工具的同学对类似的文件并不陌生。
$ cargo run
除了 build
还有一个 run
子命令。可以同时完成编译和运行。
cargo build --release
如果项目可以发布了,就可以在 build
的时候加上 --release
选项。这样输出是经过优化的,并且存放位置也变了,移动到了 target/release 之内。
关于 Cargo 的更多实用技巧,可以参考官方文档 https://doc.rust-lang.org/book/second-edition/ch01-03-hello-cargo.html 。
本节内容就是这些了。总结起来要点有这么几个:第一,安装 rust ,最佳方式是使用 rustup 。第二,编译单个文件可以用 rustc 编译器。第三,真实的项目大家都用 Cargo 来管理依赖和进行编译。
参考: