跳转到内容

Rust

Rust/cargo 可以安装,其底层使用 rustup。若尚未安装,mise 会安装 rustup,并安装所请求的工具链、组件和目标。默认情况下,mise 会使用 RUSTUP_HOMECARGO_HOME 环境变量作为主目录;如果未设置,则回退到其标准位置(~/.rustup~/.cargo)。 如果你希望将 mise 的 rustup/cargo 与其他 rustup/cargo 安装隔离,可以通过设置 MISE_RUSTUP_HOMEMISE_CARGO_HOME 环境变量来更改此设置。

这些变量也可以在 mise 配置中设置。它们会应用于同一次 mise 调用中的 Rust 操作:

toml
[env]
MISE_RUSTUP_HOME = "{{env.HOME}}/.local/share/rustup"
MISE_CARGO_HOME = "{{env.HOME}}/.local/share/cargo"

[env] 中显式设置的 RUSTUP_HOMECARGO_HOME 值优先于对应的 MISE_ 变量。

当标准 Rust 主目录尚未初始化且未配置主目录覆盖时,mise 也可以复用由软件包管理器安装的 rustup。原始的 PATH 必须包含一个目录,其中有由 Homebrew、APT 和 pacman 等软件包管理器提供的 rustupcargorustc 代理程序。显式设置 Rust 或 Cargo 主目录后,mise 将继续使用其管理的 rustup 初始化,而不是外部代理目录。

与大多数工具不同,这些工具不会存在于 ~/.local/share/mise/installs 中,因为它们由 rustup 管理。mise 会在那里保留一个用于安装跟踪的符号链接,将 RUSTUP_TOOLCHAIN 环境变量设置为所请求的版本,并在运行 mise install 时要求 rustup 安装任何已配置的组件或目标。

用法

使用最新稳定版的 rust:

sh
mise use -g rust
cargo build

使用最新 beta 版的 rust:

sh
mise use -g rust@beta
cargo build

使用滚动 nightly 通道:

sh
mise use -g rust@nightly
cargo build

配置仍然是 nightly,而 mise 会将当前 Rust 通道清单解析为具体的 nightly-YYYY-MM-DD 工具链,以用于安装和锁定文件。这会使配置的通道保持滚动更新,同时让锁定安装具有可复现性。运行 mise upgrade rustmise lock --bump 以推进锁定的 nightly。

如果要改为保留特定的 nightly,请显式配置其日期:

sh
mise use -g rust@nightly-2026-08-13

显式指定日期的 nightly 是精确固定版本。使用 --bump 的命令(例如 mise upgrade --bump rust)可以将该固定版本替换为当前 nightly。

使用特定版本的 rust:

sh
mise use -g [email protected]
cargo build

工具选项

以下 tool-options 适用于 rust 后端——这些 内容放在 mise.toml[tools] 中。

install_env

为 rustup 安装命令设置环境变量:

toml
[tools]
rust = { version = "latest", install_env = { RUSTUP_DIST_SERVER = "https://static.rust-lang.org" } }

components

components 选项允许你指定要安装的组件。可以将多个组件指定为数组,或使用逗号分隔。可用组件的集合可能因不同的发行版本和工具链而异。请查阅 Rust 文档以获取最新的组件列表。

toml
[tools]
"rust" = { version = "1.83.0", components = ["rust-src", "llvm-tools"] }

如果 Rust 工具链已经安装,mise install 仍会添加任何缺失的已配置组件。

profile

profile 选项允许你指定要安装的发布类型。支持以下值:

  • minimal:包含尽可能少的组件,以获得一个可工作的编译器(rustcrust-stdcargo
  • default:包含 minimal 配置文件中的所有组件,并额外添加 rust-docsrustfmtclippy
  • complete:包含通过 rustup 可用的所有组件。不应使用此项,因为它包含元数据中曾经出现过的每一个组件,因此几乎总会失败。

如果未设置,则默认为 rustup 中配置的 profile。你可以通过运行 rustup show profile 来查看当前默认值。

toml
[tools]
"rust" = { version = "1.83.0", profile = "minimal" }

targets

targets 选项允许你指定要为交叉编译安装的平台列表。可以将多个目标指定为数组,或使用逗号分隔。

toml
[tools]
"rust" = {
  version = "1.83.0",
  targets = ["wasm32-unknown-unknown", "thumbv2-none-eabi"],
}

如果 Rust 工具链已经安装,mise install 仍会添加任何缺失的已配置目标。

设置

rust.cargo_home

  • Type: string(optional)
  • Env: MISE_CARGO_HOME
  • Default: None

Path to the cargo home directory. Defaults to ~/.cargo or %USERPROFILE%\.cargo

rust.default_host

  • Type: string(optional)
  • Env: MISE_RUST_DEFAULT_HOST
  • Default: None

Default host triple to pass to rustup init via --default-host.

rust.rustup_home

  • Type: string(optional)
  • Env: MISE_RUSTUP_HOME
  • Default: None

Path to the rustup home directory. Defaults to ~/.rustup or %USERPROFILE%\.rustup