Rust nightly 极速更新全攻略:一键切换国内镜像 + Crates 下载加速脚本
引言 & 背景
Rust 的 nightly 工具链是体验最新语言特性(async trait、inline asm、新语法糖)和编译器优化的唯一入口。然而官方服务器位于海外,国内网络常出现「rustup update nightly」卡在 0 B/s、crates.io-index 更新 10 分钟起步的尴尬场景。
rustup 与 Cargo 均支持通过简单的环境变量 / 配置文件指向国内镜像源(清华、中科大、上交等),无需 VPN、无需改系统代理,即可把下载速度从 <50 KiB/s 提升到 5-20 MiB/s。本文给出:
- 更新 nightly 的完整命令
- 临时 & 永久指定镜像的方法(Windows / macOS / Linux 全覆盖)
- 一键脚本自动写入
.cargo/config.toml,让 crates 下载同样飞起 - 常见问题与回滚方案
一、更新 nightly 基础命令
# ① 安装或更新 nightly
rustup update nightly
# ② 设为全局默认(可选)
rustup default nightly
# ③ 验证
rustc +nightly --version # 应显示最新日期版本
二、为 rustup 指定国内镜像
| 镜像源 | 环境变量值 |
|---|---|
| 清华大学 | https://mirrors.tuna.tsinghua.edu.cn/rustup |
| 中国科技大学 | https://mirrors.ustc.edu.cn/rust-static |
| 上海交通大学 | https://mirrors.sjtug.sjtu.edu.cn/rust-static |
-
临时使用(当前终端生效)
export RUSTUP_DIST_SERVER=https://mirrors.tuna.tsinghua.edu.cn/rustup export RUSTUP_UPDATE_ROOT=https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup rustup update nightlyWindows PowerShell:
$env:RUSTUP_DIST_SERVER="https://mirrors.tuna.tsinghua.edu.cn/rustup" $env:RUSTUP_UPDATE_ROOT="https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup" rustup update nightly -
永久生效
把上面两行export写进
~/.bashrc或~/.zshrc(Linux / macOS)%USERPROFILE%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1(Windows PowerShell)
保存后重启终端即可。
三、一键脚本:自动配置 .cargo/config.toml 加速 crates 下载
脚本功能
- 自动检测操作系统
- 备份旧配置
- 写入清华镜像(默认,可一键改中科大/上交)
- 恢复指令打印到屏幕
① Linux / macOS 版(save as cargo-mirror.sh)
#!/usr/bin/env bash
set -e
CONF_DIR="$HOME/.cargo"
CONF_FILE="$CONF_DIR/config.toml"
BACKUP="$CONF_FILE.bak.$(date +%s)"
mkdir -p "$CONF_DIR"
[ -f "$CONF_FILE" ] && cp "$CONF_FILE" "$BACKUP"
cat > "$CONF_FILE" <<'EOF'
[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
EOF
echo "✅ 已写入 $CONF_FILE"
echo "🚀 默认镜像:清华大学(tuna)"
[ -f "$BACKUP" ] && echo "📦 原配置已备份为 $BACKUP"
echo "🔧 如需恢复:mv $BACKUP $CONF_FILE"
赋权 & 运行:
chmod +x cargo-mirror.sh
./cargo-mirror.sh
② Windows 版(save as cargo-mirror.ps1)
$ConfDir = "$env:USERPROFILE\.cargo"
$ConfFile = "$ConfDir\config.toml"
$Backup = "$ConfFile.bak.$([DateTimeOffset]::Now.ToUnixTimeSeconds())"
New-Item -ItemType Directory -Force -Path $ConfDir | Out-Null
if (Test-Path $ConfFile) { Copy-Item $ConfFile $Backup }
@'
[source.crates-io]
replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"
[source.ustc]
registry = "https://mirrors.ustc.edu.cn/crates.io-index"
[source.sjtu]
registry = "https://mirrors.sjtug.sjtu.edu.cn/git/crates.io-index"
'@ | Out-File -FilePath $ConfFile -Encoding utf8
Write-Host "✅ 已写入 $ConfFile"
Write-Host "🚀 默认镜像:清华大学(tuna)"
if (Test-Path $Backup) { Write-Host "📦 原配置已备份为 $Backup" }
Write-Host "🔧 如需恢复:mv $Backup $ConfFile"
执行策略若受限,先以管理员 PowerShell 运行:
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
然后:
.\cargo-mirror.ps1
四、验证镜像是否生效
# 观察 Updating index 是否 3 秒内完成
cargo +nightly search serde --limit 1
若速度明显提升,说明配置成功。
五、常见问题速查
- 想临时用官方源?
cargo +nightly build --config 'source.crates-io.replace-with="crates-io"' - 脚本写错如何回滚?
一键恢复(Linux/macOS):mv ~/.cargo/config.toml.bak.* ~/.cargo/config.toml - 镜像同步延迟?
清华/中科大通常滞后 <2 小时,可切换source.ustc或source.sjtu重试。
总结
- 更新 nightly 只需
rustup update nightly; - 国内镜像两条环境变量即可让 rustup 提速 10 倍;
- 运行文内一键脚本,30 秒完成
.cargo/config.toml配置,crates 下载同样秒级; - 脚本自带备份与回滚指令,生产环境可放心使用。
把 nightly 更新与 crates 加速一次配完,安心体验 Rust 最前沿特性吧!
版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)