4.1. 配置 Cargo 国内镜像源

Rust 官方默认的 Cargo 源服务器为 crates.io,其同时也是 Rust 官方的 crate 管理仓库,放置在 github。

Cargo 的“注册表源”与 crates.io 本身相同。也就是说,Cargo 也有一个在 github 存储库中提供的索引。该存储库匹配 crates.io index 的格式,即 github 仓库 https://github.com/rust-lang/crates.io-index,由该存储库的索引指示下载包的配置。

但是,正如我们在章节 3.1. 配置 Rust 工具链的国内源中提到过,Rust 官方服务器部署在北美洲,中国大陆用户下载速度较慢,甚至反复中断下载。因此笔者建议中国大陆用户使用国内镜像源,但如果你愿意等待较长时间,可以采用默认的官方源。

提供了 Rust 工具链镜像源的站点,一般也会提供 Cargo 国内镜像源服务。目前,国内 cargo 镜像源有:中国科学技术大学源、上海交通大学源、清华大学源,以及 rustcc 社区源。

Cargo 支持更换 crates.io 源索引,通过 $HOME/.cargo/config 文件配置。自定义 Cargo 源有两种方法,笔者推荐使用第一种:

  1. 创建 $HOME/.cargo/config 文件(各操作系统及版本均大致相同),然后在 config 文件内写入下述配置内容。其中协议推荐使用 git,但对于 https 和 git 协议,一般各镜像源都支持,并且是可以互换的。如果你所处的环境中不允许使用 git 协议,或者配置 git 协议后不能正常获取和编译 crate,可以换 https 协议再试试。
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
# 指定镜像
replace-with = '镜像源名' # 如:tuna、sjtu、ustc,或者 rustcc

# 注:以下源配置一个即可,无需全部

# 中国科学技术大学
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
# >>> 或者 <<<
registry = "git://mirrors.ustc.edu.cn/crates.io-index"

# 上海交通大学
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index/"

# 清华大学
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

# rustcc社区
[source.rustcc]
registry = "https://code.aliyun.com/rustcc/crates.io-index.git"

cargo 1.68 版本开始支持稀疏索引:不再需要完整克隆 crates.io-index 仓库,可以加快获取包的速度。如果您的 cargo 版本大于等于 1.68,可以在 $HOME/.cargo/config 中添加如下内容:

以下配置仅以中国科学技术大学源为示例,其它源配置类同。

[source.crates-io]
replace-with = 'ustc'

[source.ustc]
registry = "sparse+https://mirrors.ustc.edu.cn/crates.io-index"
  1. 或者在项目工程结构中,与 Cargo.toml 同级目录的 .cargo 文件夹下创建 config 文件,config 文件配置方法和内容与第一种相同。

关于 Cargo 的国内镜像源,笔者会及时收集、验证,以及综合测试。请定期查看、比较,以及更新,以便于提高你的开发效率。