Rust nightly 极速更新全攻略:一键切换国内镜像 + Crates 下载加速脚本

Rust nightly 极速更新全攻略:一键切换国内镜像 + Crates 下载加速脚本

Photos provided by Unsplash OR Pexels

引言 & 背景

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。本文给出:

  1. 更新 nightly 的完整命令
  2. 临时 & 永久指定镜像的方法(Windows / macOS / Linux 全覆盖)
  3. 一键脚本自动写入 .cargo/config.toml,让 crates 下载同样飞起
  4. 常见问题与回滚方案

一、更新 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
  1. 临时使用(当前终端生效)

    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 nightly

    Windows 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
  2. 永久生效
    把上面两行 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

若速度明显提升,说明配置成功。


五、常见问题速查

  1. 想临时用官方源?
    cargo +nightly build --config 'source.crates-io.replace-with="crates-io"'
  2. 脚本写错如何回滚?
    一键恢复(Linux/macOS):
    mv ~/.cargo/config.toml.bak.* ~/.cargo/config.toml
  3. 镜像同步延迟?
    清华/中科大通常滞后 <2 小时,可切换 source.ustcsource.sjtu 重试。

总结

  • 更新 nightly 只需 rustup update nightly
  • 国内镜像两条环境变量即可让 rustup 提速 10 倍;
  • 运行文内一键脚本,30 秒完成 .cargo/config.toml 配置,crates 下载同样秒级;
  • 脚本自带备份与回滚指令,生产环境可放心使用。

把 nightly 更新与 crates 加速一次配完,安心体验 Rust 最前沿特性吧!

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)