Rust初入门 -- 02 Cargo - Rust包管理器

Cargo - Rust包管理器

添加依赖

新建项目cargo,重名02-cargo并且启动:

1
2
3
4
cargo new cargo
mv cargo 02-cargo # 这部分为了排序方便,可忽略
cd 02-cargo
cargo run

添加依赖

可以在 crates.io,即 Rust 包的仓库中找到所有类别的库。在 Rust 中,我们通常把包称作“crates”。

在本项目中,我们使用了名为 ferris-says 的库。

我们在 Cargo.toml 文件中添加以下信息(从 crate 页面上获取):

1
2
[dependencies]  
ferris-says = "0.1"

接着运行:

1
cargo build

此命令就会自动下载依赖包,生成新文件 Cargo.lock,该文件记录了本地所用依赖库的精确版本.

接着使用该依赖,打开src/main.rs:

1
2
3
4
5
6
7
8
9
10
11
12
use ferris_says::say;
use std::io::{stdout, BufWriter};

fn main() {
let stdout = stdout();
let out = b"Hello, world!";
let width = 24;

let mut writer = BufWriter::new(stdout.lock());
say(out, width, &mut writer).unwrap();
println!("");
}

命令行运行

1
cargo run

首次会下载依赖包,并且编译:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
02-cargo git:(master) ✗ cargo run
Updating crates.io index
Downloaded ferris-says v0.1.1
Downloaded smallvec v0.4.5
Downloaded error-chain v0.10.0
Downloaded clap v2.33.0
Downloaded ansi_term v0.11.0
Downloaded backtrace v0.3.42
Downloaded strsim v0.8.0
Downloaded textwrap v0.11.0
Downloaded unicode-width v0.1.7
Downloaded atty v0.2.14
Downloaded vec_map v0.8.1
Downloaded cc v1.0.50
Compiling libc v0.2.66
Compiling cc v1.0.50
Compiling bitflags v1.2.1
Compiling rustc-demangle v0.1.16
Compiling unicode-width v0.1.7
Compiling cfg-if v0.1.10
Compiling strsim v0.8.0
Compiling ansi_term v0.11.0
Compiling vec_map v0.8.1
Compiling smallvec v0.4.5
Compiling textwrap v0.11.0
Compiling atty v0.2.14
Compiling clap v2.33.0
Compiling backtrace-sys v0.1.32
Compiling backtrace v0.3.42
Compiling error-chain v0.10.0
Compiling ferris-says v0.1.1
Compiling cargo v0.1.0 (/Users/zhaoxiongliang/work/github/jsl6/rust-learn/02-cargo)
Finished dev [unoptimized + debuginfo] target(s) in 31.88s
Running `target/debug/cargo`

----------------------------
| Hello, world! |
----------------------------
\
\
_~^~^~_
\) / o o \ (/
'_ - _'
/ '-----' \

如果你能看到最后的打印结果。
那么恭喜你,你已经可以写rust的代码了。