Files
DarkRoom/rust-toolchain.toml
T
dtourolleandClaude Opus 5 d70f5c14e0
Build and test / Desktop (Linux) (push) Failing after 1h18m38s
Build and test / Layer separation (push) Successful in 48s
🐳 Android image / Build and push (push) Successful in 9m41s
Build and test / android-image (push) Successful in 9m41s
Traceability / Requirement traces (push) Successful in 48s
Build and test / Android (aarch64) (push) Successful in 21m54s
Name rust-analyzer everywhere the toolchain is installed
VS Code's rust-analyzer extension ships a server newer than 1.92.0
supports and prompts, on every window, to add one. Listing the component
in rust-toolchain.toml makes rustup supply the server matching the pin —
the same thing the pin buys everywhere else.

The cost lands outside the editor, which is why this is four files
rather than one. rustup reconciles that component list against the
installed toolchain on the first cargo call in the work tree and
downloads what is missing, inside whatever job happens to be running. An
unasked-for fetch in the middle of a build step is nobody's line item
and hard to find in a log. So every environment that builds this repo
names it too: baked into the Android image, and in the install step of
each CI job that rolls its own toolchain.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 23:21:44 +02:00

37 lines
1.9 KiB
TOML

# Pinned so CI, the Android image and a contributor's laptop agree.
#
# `build-and-test.yml` already installs exactly 1.92.0 and says why: a floating
# toolchain turns an unrelated push into a mystery failure. That reasoning
# applies with more force locally than in CI, because the two checks most
# sensitive to the compiler version are the two that gate every push.
#
# `cargo fmt --all -- --check` is the sharp one. rustfmt's output changes
# between releases, so a contributor on a newer stable can reformat a file in a
# way this CI rejects — a diff nobody wrote, on a line nobody touched.
# `clippy -D warnings` is the same story with new lints.
#
# `rust-version = "1.92"` in the workspace manifest is a *minimum* and stays
# where it is; it produces a clear error on an older toolchain rather than a
# confusing one. This file is the other half: an upper bound as well as a lower
# one, so everyone compiles with the same compiler rather than merely a
# sufficient one.
#
# rustup reads this automatically and will fetch the toolchain on first use.
#
# `rust-analyzer` is in the component list for the editor's sake, not the
# build's. VS Code's rust-analyzer extension ships a server newer than 1.92.0
# supports; without a component here it prompts, on every window, to add one.
# Listing it makes rustup supply the server that matches the pin, which is the
# same thing the pin buys everywhere else.
#
# Adding anything here has a cost outside the editor: rustup reconciles this
# list against the installed toolchain on the first cargo call in the work
# tree and downloads what is missing, inside whatever job is running. So every
# environment that builds this repo already carries it — baked into
# docker/android's image, and named in the install step of each CI job that
# rolls its own toolchain. Keep those in step with this line.
[toolchain]
channel = "1.92.0"
components = ["rustfmt", "clippy", "rust-analyzer"]