# Cargo包管理器介绍

使用外部包是Cargo Crate是Rust的一个特点，以使用rand crate为例，在编写代码之前，需要修改Cargo.toml文件。编辑该文件，在末尾增如下几行代码。

```
[dependencies]
rand = "0.3.0"
```

在这个例子中，我们用了rand = 0.3.0版本，即rand= ^0.3.0 的简写，代表“任何兼容0.3.0的版本”，rand=0.3.x。在此进行编译时，默认获取当前最新版，如0.3.14。若需限制使用某个版本，如0.3.0，则可以使用：

```
[dependencies]
rand = "=0.3.0"
```

另外，在第一次编译时，Cargo会查明所有符合要求的版本，并把它们写到Cargo.lock文件里。在后续构建项目的时候，Cargo会注意到Cargo.lock的存在，并直接使用指定的版本，不会去查明版本。

在编译Rust代码时，下载的Crate默认保存在“~/.Cargo”目录下。若这个目录下的代码发生了改动，会自动重新下载新的Crate覆盖原来的。因此如想改动Crate中代码，必须使用如下代码来说明依赖本地的Crate。

```
[patch.crates-io]
rand = { path = "./rand"}
```
