Rust #
安装Rust #
设置rustup的镜像:
1# 临时替换
2# 清华源
3export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup
4export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
5
6# 或使用阿里云源
7export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup
8export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup
安装rustup:
1curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
如果页面出现:
1Rust is installed now. Great!
表示已经安装成功。
Rust通过rustup
工具进行安装和管理。如果已经安装过rustup
,可以通过运行rustup update
来更新安装。
更多信息可参阅rustup文档。
配置PATH
环境变量:
在Rust开发环境中,所有工具都安装在~/.cargo/bin
目录下,这里是可以找到Rust工具链的地方,包括rustc
、cargo
和rustup
。
因此,Rust开发者习惯将这个目录添加到他们的PATH
环境变量中。在安装过程中,rustup
会尝试配置PATH
。由于不同平台、命令shell之间的差异以及rustup
中的bug,对PATH
的修改可能要到控制台重启或用户重新登录后才能生效,也可能完全不成功。
如果安装后在控制台运行rustc --version
失败,这很可能就是原因所在。
Rust工具
- rustc - 编译器
- cargo - 包管理器和构建工具
- https://crates.io - package registry
如果想要卸载Rust,可以运行rustup self uninstall
。
VSCode扩展 #
安装必要的工具:
1apt update
2apt install build-essential
安装VSCode扩展:
- rust-analyzer extension
- CodeLLDB extension
- Even Better TOML
- Dependi,
crates - Rust Syntax
- Coverage Gutters extension
Rust Test Explore和Test Explorer UI都已经废弃, vscode从1.59起提供了内置的Testing API,等待Rust支持…
codelldb扩展包比较大,需要手动安装(注意不要再code扩展里点安装,保持codelldb未安装状态,使用下面的命令手动安装):
1wget https://github.com/vadimcn/codelldb/releases/download/v1.10.0/codelldb-x86_64-linux.vsix
2code-server -vvv --install-extension ./codelldb-x86_64-linux.vsix
本机Rust开发环境的配置 #
配置carte.io
仓库使用国内镜像
#
配置cargo对于crate.io
仓库使用国内代理镜像,创建或编辑~/.cargo/config.toml
:
1[source.crates-io]
2replace-with = 'rsproxy'
3
4[source.rsproxy]
5registry = "https://rsproxy.cn/crates.io-index"
6
7[registries.rsproxy]
8index = "https://rsproxy.cn/crates.io-index"
9
10[net]
11git-fetch-with-cli = true
cargo edit #
安装cargo-edit:
1apt install libssl-dev
2apt-get install pkg-config
3cargo install cargo-edit
单元测试覆盖率 #
其他工具 #
查看cargo install安装的所有工具和版本
1cargo install --list
cargo-generate #
cargo-generate是一个开发者工具,它通过利用预先存在的git仓库作为模板,帮助快速创建一个新的Rust项目。
cargo-deny #
cargo-deny是一个cargo插件,它允许您对项目的依赖关系图进行检查,以确保所有依赖项符合您的期望和要求。开发者可以定义规则,可以帮助开发者避免使用被禁止的包或不允许的开源许可证。
typos #
typos: 源代码拼写检查器。查找并纠正源代码中的拼写错误,速度足够快,可以在大型代码库中运行。
1cargo install typos-cli
git-cliff #
git-cliff可以通过利用约定式提交以及由正则表达式驱动的自定义解析器,从Git历史记录中生成变更日志文件。可以使用配置文件自定义变更日志模板,以匹配所需的格式。
nextest #
nexttest 是Rust的新一代测试运行器。
rust-clippy #
rust-clippy - 一系列用于检测常见错误并提升Rust代码质量的lint工具。
rust-clippy与CI集成:
1# 该命令运行Clippy,指示它在发现警告时失败。
2cargo clippy -- -D warnings
3
4# 该命令运行Clippy,在发现警告时失败,启用所有crate特性,并且还会检查测试(默认情况下,Clippy忽略测试)。
5cargo clippy --all-targets --all-features -- -D warnings
rustfmt #
rustfmt根据代码风格指南格式化Rust代码的工具。
vscode的rust-analyzer扩展中已经内置了对rustfmt的支持,当保存代码文件时会自动进行rustfmt。另外一个使用场景是在持续集成(CI)中调用cargo fmt -- --check -v
,这在CI Job中将会检查代码格式是否符合,如果不符合,传递--check
将导致命令返回非零值,最终可以使CI Job运行失败。
sccache #
sccache - 是一款类似于ccache的编译器缓存工具。它作为编译器包装器使用,并在可能的情况下避免重复编译,将缓存结果存储在本地磁盘或多个云存储后端之一。
对于大型项目,Rust编译时间可能会显著增加,而sccache通过缓存编译器生成的未改变的对象来帮助减少编译时间。sccache仅在代码已编译的情况下才有用。它不会加速新构建。
安装:
1cargo install sccache
安装后,使用cargo的rustc包装器即可启用sccache。Cargo接受RUSTC_WRAPPER
参数作为环境变量。
1export RUSTC_WRAPPER=`which sccache`
2cargo build
sccache可以直接与许多云存储后端一起使用,这使得它非常适合与 CI/CD系统一起使用。它支持与S3 协议、Redis和Memcached协议。
1export SCCACHE_REDIS=redis://:qwerty@localhost:6379