rustup v.s. cargo

cargo 是 Rust 最底层的包管理器,类似 npm 或 pip。

rustup 是 Rust 的工具链管理器,允许开发者在多个不同版本的工具间切换。所谓工具不仅包括 rustc 和 cargo,还包括 rustfmt、racer 等一系列辅助开发的模块。类似于 Anaconda、Pipenv 之于 Python,或是 n 之于 Node.js。

Rust 的工具链默认存在于 ~/.cargo/bin 中,rustup 会用代理脚本覆盖其中的可执行文件,从而用户可以通过命令行标志方便地切换版本。

stable v.s. beta v.s. nightly

Rust 官方默认提供三个通道,稳定性依次递降,即时性依次递增。当然,还有众多的第三方版本。

Rust 工具链普遍有一个标志 +<channel> 用于注明通道版本,如:

1
2
3
4
$ rustc +nighly --version
rustc 1.33.0-nightly (68fe5182c 2019-01-05)
$ rustc +stable --version
rustc 1.31.1 (b6c32da9b 2018-12-18)

Sublime 配置

我们希望让 Sublime 支持如下功能:

  1. Auto Formatting
  2. Auto Completement
  3. Check on Save

为此需要两个插件:

  • Rust Enhanced(提供 3)
  • Anaconda Rust(提供 1 和 2)

Rust Enhanced

直接安装即可。

Anaconda Rust

官方版本停更了,rustfmt 相关功能有一些问题。为此需要使用我修改过的版本:https://github.com/hsfzxjy/anaconda_rust

依赖 rustfmtracer

racer

racer 需要 nightly 版本,用以下脚本安装:

1
$ cargo +nightly install racer

此方法需要本地编译,时间比较久。

自动补全的完成还需要一份 Rust 库的源码,可以从这个页面 下载。

解压完成后需要配置 Anaconda Rust 插件的 rust_src_path 选项。

rustfmt

rustfmt 支持使用 rustup 安装,更省时间:

1
$ rustup component add rustfmt-preview