Rust 环境配置备忘(Windows)

发布于

Rust 环境配置备忘(Windows)

在 Windows 新机器上重现 Rust 开发环境的完整流程,按顺序执行即可。macOS 差异见文末附录。

Step 1 — 先定存储位置

在安装 rustup 之前设置好这两个目录,避免默认装到 C 盘后再手动迁移。

打开 PowerShell,写入用户环境变量(User 作用域,无需管理员权限):

[System.Environment]::SetEnvironmentVariable('DEV_HOME',    'D:\home',           'User')
[System.Environment]::SetEnvironmentVariable('RUSTUP_HOME', 'D:\home\rustup',    'User')
[System.Environment]::SetEnvironmentVariable('CARGO_HOME',  'D:\home\cargo',     'User')

$path = [System.Environment]::GetEnvironmentVariable('Path', 'User')
[System.Environment]::SetEnvironmentVariable('Path', "$path;D:\home\cargo\bin", 'User')

设置完毕后重启终端,验证:

$env:DEV_HOME       # 应输出 D:\home
$env:RUSTUP_HOME    # 应输出 D:\home\rustup
$env:CARGO_HOME     # 应输出 D:\home\cargo

Step 2 — 镜像加速

winget 下载 rustup-init.exe 走官方地址,但 rustup-init 运行时会读取 RUSTUP_DIST_SERVER 下载工具链(几百 MB),所以镜像要在安装前设好

二选一写入用户环境变量:

# 清华大学
[System.Environment]::SetEnvironmentVariable('RUSTUP_DIST_SERVER', 'https://mirrors.tuna.tsinghua.edu.cn/rustup',         'User')
[System.Environment]::SetEnvironmentVariable('RUSTUP_UPDATE_ROOT',  'https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup', 'User')
# RsProxy(字节跳动)
[System.Environment]::SetEnvironmentVariable('RUSTUP_DIST_SERVER', 'https://rsproxy.cn',         'User')
[System.Environment]::SetEnvironmentVariable('RUSTUP_UPDATE_ROOT',  'https://rsproxy.cn/rustup', 'User')

%CARGO_HOME%\config.toml 中配置 crates.io 源,同样二选一:

# 清华大学
[source.crates-io]
replace-with = "tuna"

[source.tuna]
registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"

[registries.tuna]
index = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/"
# RsProxy(字节跳动)
[source.crates-io]
replace-with = "rsproxy-sparse"

[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"

Sparse Registry 协议(Rust 1.68+)无需克隆完整索引,cargo update 速度大幅提升。

Step 3 — 安装 rustup

winget install Rustlang.Rustup

winget 实际运行的是 rustup-init.exe,它完成安装后把自己转变为 rustup.exe,不会留下独立的可卸载条目。后续更新由 rustup self update 接管;完全移除 Rust 用 rustup self uninstall

重启终端,验证:

rustc --version
cargo --version
rustup --version

Step 4 — 必备组件

rustup component add rustfmt clippy rust-analyzer rust-src

这四个覆盖日常开发全部需求:格式化、Lint、LSP 智能提示、标准库跳转定义。

Step 5 — cargo 全局配置

将以下内容写入 D:\home\cargo\config.toml(接续 Step 2 已写的内容):

# ── 链接器 ────────────────────────────────────────────────
# lld-link 随 VS Build Tools 一起安装,无需额外操作
# 比默认 MSVC link.exe 快,大项目体感明显
[target.x86_64-pc-windows-msvc]
linker = "lld-link"

# ── 编译 profile ──────────────────────────────────────────
[profile.dev]
opt-level = 1       # 基础优化,增量编译速度有提升,debug 信息保留

[profile.release]
lto           = "thin"      # Thin LTO:体积与编译时间的平衡点
codegen-units = 1           # 单 CGU,优化质量最高
strip         = "symbols"   # 去掉符号表,减小二进制体积(Rust 1.59+)

# ── 别名 ──────────────────────────────────────────────────
[alias]
b  = "build"
br = "build --release"
c  = "check"
cl = "clippy -- -D warnings"
t  = "test"
rr = "run --release"

Step 6 — 验证

cargo new hello-rust
cd hello-rust
cargo run

看到 Hello, world! 输出,全链路通。


附录:macOS 差异

macOS 上和 Windows 流程的不同之处(其余配置完全相同):

存储位置:macOS 系统盘通常够用,跳过 Step 1,使用默认的 ~/.rustup~/.cargo

环境变量:写入 ~/.zshrc 而非系统环境变量:

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

链接器:用 mold(速度快,效果接近 Linux 上的体验):

brew install mold

~/.cargo/config.toml 中按芯片类型配置:

# Apple Silicon
[target.aarch64-apple-darwin]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=/opt/homebrew/bin/mold"]

# Intel Mac
[target.x86_64-apple-darwin]
linker = "clang"
rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/mold"]

安装命令:macOS 无 winget,改用:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh