文章目录
- [1 rust](#1 rust)
-
- [1.1 简介](#1.1 简介)
- [1.2 下载](#1.2 下载)
-
- [1.2.1 下载安装rustup](#1.2.1 下载安装rustup)
- [1.2.2 MSVC和Gnu区别](#1.2.2 MSVC和Gnu区别)
- [1.2.3 切换国内镜像地址](#1.2.3 切换国内镜像地址)
-
- [1.2.3.1 cargo 国内地址](#1.2.3.1 cargo 国内地址)
- [1.2.3.2 rustup 国内地址](#1.2.3.2 rustup 国内地址)
- [1.3 rustup](#1.3 rustup)
- [1.4 cargo](#1.4 cargo)
- [1.5 项目中文件](#1.5 项目中文件)
1 rust
1.1 简介
Rust 是由 Mozilla 主导开发的高性能编译型编程语言,遵循"安全、并发、实用"的设计原则,首次发布于 2010 年。
Rust 支持多种编程范式,包括函数式、并发式、过程式和面向对象风格。
由于没有运行时和垃圾回收,它能够胜任对性能要求特别高的服务,可以在嵌入式设备上运行,还能轻松和其他语言集成。
与C/C++相比:
- C语言的语法相对简单,是三者中最基础的:
语法结构清晰,关键字较少,没有复杂的类型系统和泛型概念,指针操作直接明了 - C++ 在C的基础上增加了大量复杂特性:
面向对象编程,模板和泛型,异常处理,STL标准库,多重继承等复杂概念 - Rust的语法相对复杂但有其逻辑性:
所有权系统,模式匹配,生命周期概念,严格的类型系统
1.2 下载
1.2.1 下载安装rustup
rust 环境搭建要用rustup比较方便点,rustup 用于管理不同平台下的 Rust 构建版本并使其互相兼容, 支持安装由 Beta 和 Nightly 频道发布的版本,并支持其他用于交叉编译的编译版本。
rustup 是 Rust 的工具链管理器(rustc + cargo + std + linker) 配置它能:
- 安装和管理多个 Rust 版本(stable、beta、nightly)
- 安装不同的目标平台编译支持
- 管理 Cargo(Rust 的包管理器)
- 提供工具如 rustfmt、clippy 等
win环境直接下载rustup地址:
- msvc工具链:https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-msvc/rustup-init.exe
- mingw工具链:https://static.rust-lang.org/rustup/dist/x86_64-pc-windows-gnu/rustup-init.exe
也可以直接使用 scoop(点击了解win环境下scoop使用教程)装 rustup,命令:scoop install main/rustup,执行完后,直接自动执行rustup-init.exe(使用的是默认msvc),而不像直接下载还需要手动执行rustup-init.exe,另外会自动添加用户环境变量,同时创建了CARGO_HOME / RUSTUP_HOME
其中,RUSTUP_HOME 是工具链仓库,CARGO_HOME是包和工具缓存,如果不设置,那么都在默认用户目录下:C:\Users\<username>\.rustup和C:\Users\<username>\.cargo
scoop安装成功图示如下:

1.2.2 MSVC和Gnu区别
使用MSVC适用下面场景:
windows-sys / windows crate- 写
Windows GUI - 调用系统
DLL - 做可分发的
Windows程序
适应Gnu场景:
- 学
Rust语法 / 所有权 / 生命周期 - 写小 demo,写 CLI 程序
- 算法 / 数据结构练习
- 跑
cargo test - 不写
Windows GUI - 不直接调用
WinAPI / COM
下载Visual C++ Build Tools:https://visualstudio.microsoft.com/visual-cpp-build-tools/
或者切换 rustup为gnu 工具链(使用MinGW)命令,此时不用下载类似MSVC的三方工具,rustup自带的有gnu
bash
# 安装 gnu 对应工具链
rustup toolchain install stable-x86_64-pc-windows-gnu
# 如果刚开始是gnu需要装下 msvd
# rustup toolchain install stable-x86_64-pc-windows-msvc
# 或者使用 rustup install stable-x86_64-pc-windows-gnu
rustup default stable-x86_64-pc-windows-gnu
验证
rustup show
1.2.3 切换国内镜像地址
| Rustup | Cargo | |
|---|---|---|
| 用途 | 安装/更新 Rust 工具链本身(rustc、rust-std、cargo、rust-docs 等) | 下载 项目依赖包(serde、tokio、actix-web 等 crates) |
| 下载内容 | rustc.exe、libstd、cargo.exe 等官方组件 |
serde-1.0.200.crate、tokio-1.37.0.crate 等第三方库 |
| 触发时机 | rustup install、rustup update、rustup component add |
cargo build、cargo run、cargo add |
| 存储位置(默认) | ~/.rustup/toolchains/ |
~/.cargo/registry/cache/ |
| 配置方式 | 环境变量 RUSTUP_DIST_SERVER |
配置文件 config.toml |
1.2.3.1 cargo 国内地址
切换cargo国内下载地址,如果没有添加CARGO_HOME,那么就在 C:\Users\<username>\.cargo,但是上面用的是scoop下载安装,那么就是在scoop下D:\Scoop\persist\rustup\.cargo下添加文件config.toml
bash
# 声明要对"官方源 crates-io"做替换
[source.crates-io]
# 以后凡是本来要去 crates-io 的,都改去下面定义的 ustc 源
replace-with = "ustc"
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
其他可选的国内镜像源:
- 中科大镜像:https://mirrors.ustc.edu.cn/git/crates.io-index
- 清华大学镜像:https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index
- 阿里巴巴镜像:https://code.aliyun.com/rust/crates.io-index.git
1.2.3.2 rustup 国内地址
下载时牵涉的两个环境变量:
| 环境变量 | 用途 | 下载内容 | 触发命令 |
|---|---|---|---|
RUSTUP_DIST_SERVER |
工具链组件分发 | rustc、rust-std、cargo、rust-docs、clippy 等 | rustup install、rustup update、rustup component add |
RUSTUP_UPDATE_ROOT |
Rustup 自身更新 | rustup-init.exe、rustup 新版本二进制 | rustup self update |
rustup 使用环境变量
bash
setx RUSTUP_DIST_SERVER https://mirrors.ustc.edu.cn/rust-static
setx RUSTUP_UPDATE_ROOT https://mirrors.ustc.edu.cn/rust-static/rustup
1.3 rustup
rustup相关命令介绍
| 场景 | 命令示例 | 说明 |
|---|---|---|
| help | rustup help |
查看rustup命令 |
rustup help <子命令> |
查看rustup 子命令 | |
| 查看信息 | rustup show |
显示当前安装的所有工具链及默认版本 |
rustc --version |
只看当前生效的 rustc 版本 | |
rustup which cargo |
查看实际指向的 cargo 路径 | |
| 安装/卸载工具链 | rustup install stable |
安装最新 stable 工具链 |
rustup install 1.86.0 |
安装指定版本工具链 | |
rustup install nightly |
安装最新 nightl工具链y | |
rustup uninstall 1.86.0 |
卸载指定版本工具链 | |
| 切换默认工具链 | rustup default stable |
全局换成 stable工具链 |
rustup default nightly |
全局换成 nightly工具链 | |
| 项目级版本锁定 | rustup override set nightly |
在当前项目目录固定 nightly |
rustup override unset |
取消目录级锁定 | |
| 更新 | rustup update |
更新 rustup 本身及所有已装工具链 |
rustup update nightly |
只更新 nightly | |
| 组件管理 | rustup component add rustfmt clippy |
一次性安装多个组件 |
rustup component list --installed |
查看已装组件 | |
rustup component remove rustfmt |
卸载组件 | |
| 目标平台(交叉编译) | rustup target add wasm32-unknown-unknown |
加装 32-bit WebAssembly |
rustup target list --installed |
查看已装目标 | |
| 一次性运行指定版本 | rustup run nightly cargo build |
用 nightly 临时跑一条命令 |
| 生成 shell 补全 | rustup completions bash > ~/.local/share/bash-completion/completions/rustup |
支持 bash/zsh/fish/pwsh |
| 卸载 rustup | rustup self uninstall |
一键卸载整个 Rust 环境 |
| toolchain | rustup toolchain install stable |
安装最新 stable 工具链 |
rustup toolchain list |
展示工具链列表 | |
rustup toolchain remove nightly |
移除工具链 |
1.4 cargo
cargo相关命令介绍,
任何命令后加 --help 可看全部选项
cargo --list 列出所有子命令
| 场景 | 命令示例 | 说明 |
|---|---|---|
| 项目生命周期 | cargo new my_app |
新建可执行项目 |
cargo new --lib my_lib |
新建库项目 | |
cargo run |
快速编译运行(调试) | |
cargo check |
检查能否编过(最快) | |
cargo build |
正式构建(调试) | |
cargo build --release |
发布级构建 | |
cargo clean |
清理中间文件 | |
cargo build -j 8 |
限制并行任务数 | |
cargo build --timings |
生成耗时火焰图,定位慢包 | |
| 依赖管理 | cargo add serde |
添加最新版依赖 |
cargo remove serde |
移除依赖 | |
cargo add tokio --features full |
添加指定版本/特征 | |
cargo update |
升级 lock 文件里所有包 | |
cargo update -p serde |
只升级某个包 | |
cargo tree |
查看依赖树 | |
cargo outdated(需 cargo install cargo-outdated) |
查看过时包 | |
| 测试 & 文档 | cargo test |
跑全部测试 |
cargo test --lib |
只测某个模块 | |
cargo nextest run(需安装 nextest) |
连续测(保存状态) | |
cargo doc --open |
生成并打开文档 | |
cargo doc --no-deps(反向) |
给依赖也生成文档 | |
| 代码质量 | cargo fmt |
自动格式化 |
cargo clippy |
检查代码风格/常见错误 | |
cargo clippy --fix |
自动修复部分 clippy 警告 | |
| 发布&注册表 | cargo package |
打包并验证 |
cargo publish |
发布到 crates.io | |
cargo login / cargo logout |
登录/注销 | |
cargo search regex |
查询注册表 | |
| 扩展子命令 | cargo install cargo-audit |
检查依赖安全漏洞 |
cargo install cargo-edit |
获得 add/rm/upgrade 命令 | |
cargo install cargo-outdated |
查看可升级依赖 | |
cargo install cargo-nextest |
更快并行测试运行器 |
1.5 项目中文件
Cargo.lock 锁的是"代码用什么库",使用cargo new 项目时自动生成
.rustup-toolchain.toml 锁的是"代码用什么编译器",需要手动创建,比如:
bash
# .rustup-toolchain.toml
[toolchain]
channel = "1.86.0"
components = ["rustfmt", "clippy"]
targets = ["wasm32-unknown-unknown"]