1.环境安装
在linux系统(或者MacOS)上安装rust,在终端输入如下命令:
$ curl https://sh.rustup.rs -sSf | sh
通过上述命令安装好rust之后会自动将rust工具添加到环境变量PATH
中,并在下次登陆系统自动生效,为了想立即生效开始使用Rust而不用重启,需要了执行以下命令使环境配置立即生效:
$ source "$HOME/.cargo/env"
更新rust版本:
$ rustup update
卸载rust:
$ rustup self uninstall
查看系统当前rust版本:
$ rustc --version
Windows系统安装Rust以及更多详情请参见官方网站:(https://www.rust-lang.org/learn/get-started)[https://www.rust-lang.org/learn/get-started]
2.编写第一个rust程序:hello world
本地创建一个项目文件夹:
$ mkdir -p ~/projects/hello_world
$ cd ~/projects/hello_world
在当前文件夹下新建一个源文件:hello_world.rs
,Rust源文件命名规则总是以.rs
拓展名结尾,文件名多个单词通常建议以下划线_
进行分割。
hello_world.rs
文件内容如下:
fn main() {
println!("hello world!");
}
用如下命令编译这个源文件:
$ rustc hello_world.rs
可以编译得到一个可以执行文hello_world
,可以用ls命令查看如下:
$ ls
hello_world hello_world.rs
执行编译出来的程序:
$ ./hello_world
hello world!
回过头来看看这个程序,程序里面道理发生了什么:
- fn是函数定义关键字,声明定义了一个名为main函数,该函数没有任何参数和返回值,如果函数有参数则放在圆括号()中,花括号{}用来标记函数体
- main函数比较特殊,当你运行一个可执行的rust程序时,所有代码会从这个入口函数开始执行
- 函数体中的代码为:
println!("hello world!");
, 将字符串输出到终端,rust是采用4个空格方s式进行缩进。这里调用了一个被叫println!
做的宏,如果是调用一个普通函数将没有这里的感叹号!
,rust中所有以感叹号!
结尾的调用都是一个宏而不是普通函数,注意加以区分
3.Rust依赖管理工具Cargo
Cargo是Rust工具链中内置的一个系统构建和包管理工具,在复杂的系统中是必要的,所以绝大多数用户会选择用它来管理自己的rust项目 检查cargo是否以安装:
$ cargo --version
创建cargo项目
本地创建一个cargo项目:
$ cargo new hello_cargo
会自动生成一个hello_cargo文件夹,查看生成的cargo项目文件结构目录如下:
$ tree hello_cargo/
hello_cargo/
├── Cargo.toml
└── src
└── main.rs
核心文件Cargo.toml
使用TOML
(Tom’s Obvious, Minimal Language)作为标准的配置格式,定义了相关项目信息和依赖,内容如下:
[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]
rust代码源文件放在src
目录下,里面默认初始化生成了一个源文件src/main.rs
,内容如下跟hello_world.rs文件一样:
fn main() {
println!("Hello, world!");
}
此外,Cargo还会自动初始化生成一个新的git仓库并默认生成.gitignore
文件
构建Cargo项目
在当前项目hello_cargo文件夹下,通过如下命名来构建项目:
$ cargo build
Compiling hello_cargo v0.1.0 (/xxx/xxx/xxx/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
可执行程序生存在目录target/debug
下,执行命令:
$ ./target/debug/hello_cargo
Hello, world!
我们也可以简单的用cargo run
命令来一次完成编译和原型任务:
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.00s
Running `target/debug/hello_cargo`
Hello, world!
cargo还提供了一个cargo check
的命令用来快速检查当前代码是否可以通过编译,而不需要花费大的代价去真正生成可执行文件
$ cargo check
Checking hello_cargo v0.1.0 (/xxx/xxx/xxx/hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 0.01s
如果是发布项目(或者进行基准测试)需要使用命令cargo build --release
在优化模式下生存可执行文件,生存的可执行文件会被放在target/release
目录下,而不知之前的target/debug
下,这种模式编译器会花费更多的编译时间为代价带来优化的代码,生存的可以执行文件运行时具有更好的性能,通常用于发布生产环境和进行基准测试。
$ cargo build --release
Compiling hello_cargo v0.1.0 (/xxx/xxx/xxx/hello_cargo)
Finished release [optimized] target(s) in 0.10s
$ ./target/release/hello_cargo
Hello, world!