QuickRust installs every toolchain it needs on first use, so most of the steps below only state what you want; the next command that needs it installs it. The full list of toolchain commands is in Commands.
See which toolchain a directory uses
qrust toolchain list
The last two lines say what the default is and which toolchain the current directory uses, and why:
default: stable
here: 1.80 (from /home/me/app/rust-toolchain.toml)
qrust toolchain which prints that toolchain’s directory, and qrust toolchain which rustc the path of one of its programs.
QuickRust chooses in rustup’s order: +<toolchain> as the first argument, then RUSTUP_TOOLCHAIN, then a toolchain file in the directory or the nearest one above it, then the default.
Pin a toolchain for a project
Put a rust-toolchain.toml at the root of the project:
[toolchain]
channel = "1.98"
components = ["rust-src", "llvm-tools"]
targets = ["wasm32-unknown-unknown"]
profile = "minimal"
Only channel is required. The next command in that directory installs the toolchain, the listed components and the listed targets’ standard libraries. A key the format does not have is an error, and so is a directory holding both rust-toolchain and rust-toolchain.toml.
channel takes stable, beta, nightly, a dated nightly (nightly-2026-10-11), a minor release (1.98, which follows its patch releases) or an exact release (1.98.1), optionally followed by a host triple. If the toolchain lives in a directory of its own, use path = "../my-toolchain" instead of channel; components, targets and profile do not apply to it.
Use another toolchain for one command
cargo +nightly build
cargo +1.80 test
RUSTUP_TOOLCHAIN=beta cargo check
Editors and tools that set RUSTUP_TOOLCHAIN, including to a toolchain’s directory, work the same way.
Change the default
qrust toolchain default 1.98
qrust toolchain default # prints the current default
The default applies wherever no +toolchain, RUSTUP_TOOLCHAIN or toolchain file decides. It can be a channel, a release or the name of a linked toolchain.
Add components and targets
qrust toolchain component add rust-analyzer llvm-tools
qrust toolchain target add aarch64-unknown-linux-musl
qrust toolchain target add wasm32-unknown-unknown --toolchain nightly
Without --toolchain, they change the toolchain the current directory uses. remove instead of add takes them out again.
You rarely need target add: a build with --target <triple> installs that target’s standard library itself.
Install toolchains ahead of time
qrust toolchain install stable 1.80 nightly
qrust toolchain install nightly --profile minimal --component miri --target wasm32-unknown-unknown
Do this where the first build must not wait for a download, for example when building a container image. --profile is minimal (rustc, Cargo, the standard library), default (the default: minimal with clippy, rustfmt and rust-src) or complete.
Use a toolchain you built yourself
qrust toolchain link dev ~/src/rust/build/host/stage1
cargo +dev build
The directory must contain bin/rustc and bin/cargo. A linked toolchain is used as it is: QuickRust never installs components or targets into it, and qrust toolchain unlink dev only forgets the name.
Download toolchains from a mirror
If your network cannot reach static.rust-lang.org, point QuickRust at a mirror of it, in ~/.qrust/config.toml:
[toolchain]
dist-server = "https://rust-mirror.example.com"
or for one shell with QRUST_DIST_SERVER. The mirror must serve the same layout (dist/channel-rust-<channel>.toml and the archives it names).
Keep toolchains current
Once a day after a build, QuickRust checks in the background whether the channel the build used (stable, beta, nightly, 1.98) has a newer release, and installs it for the next build. Toolchains asked for by an exact name (1.98.1, nightly-2026-10-11) never move.
- To update now:
qrust toolchain update, orqrust toolchain update --channel stablefor one channel. - To turn the background check off, set
toolchain.auto-update = "off"in~/.qrust/config.tomlorQRUST_TOOLCHAIN_AUTO_UPDATE=off. It never runs in CI. - To stay on one release, pin it with an exact version in
rust-toolchain.toml.
A release a channel left behind is removed after a day in which nothing used it. To remove a toolchain yourself:
qrust toolchain remove nightly # the release the channel names
qrust toolchain remove 1.97.0-x86_64-unknown-linux-gnu
A removed toolchain is installed again the next time something asks for it.
Related
- About owning the Rust environment for why QuickRust replaces rustup
- Files and directories for where toolchains are kept
- Configuration for
toolchain.auto-updateandtoolchain.dist-server