Rust
安装Rust
设置rustup的镜像:
# 临时替换
# 清华源
export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup
# 或使用阿里云源
export RUSTUP_UPDATE_ROOT=https://mirrors.aliyun.com/rustup/rustup
export RUSTUP_DIST_SERVER=https://mirrors.aliyun.com/rustup安装rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh如果页面出现:
Rust 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扩展
安装必要的工具:
apt update
apt 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未安装状态,使用下面的命令手动安装):
wget https://github.com/vadimcn/codelldb/releases/download/v1.10.0/codelldb-x86_64-linux.vsix
code-server -vvv --install-extension ./codelldb-x86_64-linux.vsix本机Rust开发环境的配置
配置carte.io仓库使用国内镜像
配置cargo对于crate.io仓库使用国内代理镜像,创建或编辑~/.cargo/config.toml:
[source.crates-io]
replace-with = 'rsproxy'
[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"
[net]
git-fetch-with-cli = truecargo edit
安装cargo-edit:
apt install libssl-dev
apt-get install pkg-config
cargo install cargo-edit单元测试覆盖率
其他工具
查看cargo install安装的所有工具和版本
cargo install --listcargo-generate
cargo-generate是一个开发者工具,它通过利用预先存在的git仓库作为模板,帮助快速创建一个新的Rust项目。
cargo-deny
cargo-deny是一个cargo插件,它允许您对项目的依赖关系图进行检查,以确保所有依赖项符合您的期望和要求。开发者可以定义规则,可以帮助开发者避免使用被禁止的包或不允许的开源许可证。
typos
typos: 源代码拼写检查器。查找并纠正源代码中的拼写错误,速度足够快,可以在大型代码库中运行。
cargo install typos-cligit-cliff
git-cliff可以通过利用约定式提交以及由正则表达式驱动的自定义解析器,从Git历史记录中生成变更日志文件。可以使用配置文件自定义变更日志模板,以匹配所需的格式。
nextest
nexttest 是Rust的新一代测试运行器。
rust-clippy
rust-clippy - 一系列用于检测常见错误并提升Rust代码质量的lint工具。
rust-clippy与CI集成:
# 该命令运行Clippy,指示它在发现警告时失败。
cargo clippy -- -D warnings
# 该命令运行Clippy,在发现警告时失败,启用所有crate特性,并且还会检查测试(默认情况下,Clippy忽略测试)。
cargo clippy --all-targets --all-features -- -D warningsrustfmt
rustfmt根据代码风格指南格式化Rust代码的工具。
vscode的rust-analyzer扩展中已经内置了对rustfmt的支持,当保存代码文件时会自动进行rustfmt。另外一个使用场景是在持续集成(CI)中调用cargo fmt -- --check -v,这在CI Job中将会检查代码格式是否符合,如果不符合,传递--check将导致命令返回非零值,最终可以使CI Job运行失败。
sccache
sccache - 是一款类似于ccache的编译器缓存工具。它作为编译器包装器使用,并在可能的情况下避免重复编译,将缓存结果存储在本地磁盘或多个云存储后端之一。
对于大型项目,Rust编译时间可能会显著增加,而sccache通过缓存编译器生成的未改变的对象来帮助减少编译时间。sccache仅在代码已编译的情况下才有用。它不会加速新构建。
安装:
cargo install sccache安装后,使用cargo的rustc包装器即可启用sccache。Cargo接受RUSTC_WRAPPER参数作为环境变量。
export RUSTC_WRAPPER=`which sccache`
cargo buildsccache可以直接与许多云存储后端一起使用,这使得它非常适合与 CI/CD系统一起使用。它支持与S3 协议、Redis和Memcached协议。
export SCCACHE_REDIS=redis://:qwerty@localhost:6379