Rust 1.100 bringt den Never-Typ, eigene Allocators und Cargo-Lints
Rust 1.100.0 erschien am 12. November. In einem Test von Tech AI Wire baut Code, der den Never-Typ-Lint unter Rust 1.99 stummschaltete, unter 1.100 nicht mehr.
Von Claire Whitmore
4 Min. Lesezeit
Maschinell übersetzt aus dem englischen Original, das Claire Whitmore auf Fakten geprüft und redigiert hat. Es gilt die englische Fassung. So arbeiten wir

Die Zahlen
- Veröffentlichung von Rust 1.100.0
- 12. Nov. 2026
- war der Never-Typ vor diesem Release instabil
- 10 Jahre
- Mindestalter für Veröffentlichungen in Cargos eigener Beispielkonfiguration
- 3 Tage
Das Rust-Projekt hat Rust 1.100.0 am 12. November 2026 veröffentlicht. Es macht den Never-Typ stabil, öffnet den Kern der API für eigene Allocators und bringt Cargo bei, vor ungenutzten Abhängigkeiten zu warnen. Die Änderung am Never-Typ ist zugleich ein Breaking Change, und die Release Notes führen sie unter "Compatibility Notes". Projekte jeder Edition können nun dort am Build scheitern, wo sie vorher kompilierten.
Laut der Ankündigung im Rust Blog brauchte der Never-Typ 10 Jahre und 5 gescheiterte Anläufe, um stabil zu werden. LWN.net stellte dieselben drei Änderungen an den Anfang: den Never-Typ, den Kern der Allocator API und Cargos Bericht über ungenutzte Abhängigkeiten. Rust-Nutzer aktualisieren mit rustup update stable.
Was in Rust 1.100 neu ist
Der Never-Typ, geschrieben !, ist der Typ von Code, der nie fertig wird, etwa ein panic! oder eine Endlosschleife. Bisher durfte er nur als Rückgabetyp einer Funktion stehen. Unser Leitfaden zum Never-Typ in Rust erklärt ihn ausführlich, und unser Artikel aus dem August behandelte den Pull Request, der ihn stabil machte.
Die Tabelle unten stützt sich auf den Blogpost, die Release Notes auf GitHub und das Cargo-Changelog.
| Änderung | Was sie bewirkt | Wer es merkt |
|---|---|---|
Never-Typ ! | Überall nutzbar, etwa in Result<T, !>; Infallible wird ein Alias für ! | Code, der sich auf den alten Fallback verließ |
| Typ-Fallback | Ein unbekannter Typ in einem divergierenden Zweig wird jetzt in allen Editions zu ! statt () | Ältere Crates, die nie auf Edition 2024 umgestiegen sind |
| Allocator API | Allocator, Global, System sowie Vec::new_in, Box::new_in und ähnliche Methoden | Code, der seinen Speicher selbst verwaltet |
cargo::unused_dependencies | Warnt, wenn eine Abhängigkeit in Cargo.toml nie genutzt wird | Jedes Cargo-Projekt |
| Mindestalter für Veröffentlichungen | Cargo kann Crate-Versionen überspringen, die jünger als ein festgelegtes Alter sind | Teams, die Supply-Chain-Angriffe fürchten |
| Layout des Build-Verzeichnisses | Zwischendateien des Builds ziehen um | Skripte, die Cargos target-Ordner direkt lesen |
i686-pc-windows-gnu | Jetzt Tier 2 ohne Host-Tools | Nutzer von 32-Bit-Windows |
Die Änderung für 32-Bit-Windows wurde im Oktober angekündigt, wie unser Artikel zu den i686-Targets erklärt. Das Release stabilisiert auch kleinere Helfer wie bool::toggle, Vec::from_fn und str::trim_prefix.
Test von Tech AI Wire: Rust 1.99.1 gegen 1.100.0
In einem Test von Tech AI Wire unter macOS 26.6.2 liefen dieselben kleinen Projekte in den offiziellen Docker-Images rust:1.99-slim und rust:1.100-slim. Beide sind Debian 13 auf arm64. Die Images meldeten rustc 1.99.1 und rustc 1.100.0.
Das erste Projekt nutzte Edition 2021 und diesen Code:
fn make<T: Default>() -> Result<T, ()> {
Ok(T::default())
}
fn main() -> Result<(), ()> {
make()?;
Ok(())
}
Nichts sagt dem Compiler, was T ist, also greift er auf einen Standardtyp zurück. Das machte jede Version daraus:
| Code | Rust 1.99.1 | Rust 1.100.0 |
|---|---|---|
| Wie geschrieben | Fehler durch den Lint dependency_on_unit_never_type_fallback | Fehler E0277: "the trait bound !: Default is not satisfied" (die Trait-Schranke !: Default ist nicht erfüllt) |
Mit #![allow(dependency_on_unit_never_type_fallback)] | Baut und läuft | Weiterhin Fehler E0277; der Lint "has been removed" (wurde entfernt) |
Mit make::<()>()? | Baut und läuft | Baut und läuft |
Die mittlere Zeile ist die Falle. Ein Crate, das die Warnung unter 1.99 stummschaltete, baut dort und scheitert dann unter 1.100. Rust 1.100 begründet die Entfernung des Lints damit, dass "the code warned by this lint no longer compiles" (der Code, vor dem dieser Lint warnte, kompiliert nicht mehr). Nur das Ausschreiben des Typs behebt es.
Der Test für eigene Allocators umhüllte den globalen Allocator, um Anfragen zu zählen. Unter 1.99.1 scheiterte er mit Fehler E0658, "use of unstable library feature allocator_api". Unter 1.100.0 lief er auf Stable. Ein Vec mit 1.000 Zahlen plus ein Box lösten 10 Allokationsaufrufe für 16.356 Bytes aus.
Test von Tech AI Wire: Cargos zwei neue Sicherheitsprüfungen
Ein Crate (ein Rust-Paket) führte itoa und memchr als Abhängigkeiten, nutzte aber nur itoa. Unter 1.100 gab cargo build "warning: unused dependency memchr" aus. Mit unused_dependencies = "deny" unter [lints.cargo] wurde daraus ein Fehler, und der Build brach ab. Eine nie genutzte Dev-Dependency bekam keine Warnung. Ebenso wenig cargo check --bin unused, das ein einzelnes Target prüft. Beides entspricht Ausnahmen, die der Blogpost aufführt. Rust 1.99.1 ignorierte die Tabelle [lints.cargo] mit der Warnung "unused manifest key".
Das Mindestalter für Veröffentlichungen verzögert brandneue Crate-Versionen, was der Blogpost "dependency cooldowns" nennt. Die Wartezeit gibt anderen Zeit, ein fehlerhaftes Release zu entdecken, bevor Ihr Build es einzieht. Mit global-min-publish-age = "3 days" unter [registry] legte Cargo cc auf 1.11.1 fest. Es meldete "available: v1.11.2, published 2 hours ago". Ohne die Einstellung wählte Cargo 1.11.2. Mit 30 Tagen schlug die Auflösung fehl, weil cargo add bereits 1.11.1 als Mindestversion eingetragen hatte. Cargo schlug vor, die Anforderung auf "1.8.0" zu senken oder CARGO_RESOLVER_INCOMPATIBLE_PUBLISH_AGE=allow zu setzen.
Was das für Entwickler bedeutet
- Bauen Sie jedes Crate mit 1.100, bevor Sie die CI umstellen. Code aus älteren Editions bricht am ehesten. Suchen Sie nach
allow(dependency_on_unit_never_type_fallback), denn dieser Code scheitert unter 1.100. - Beheben Sie Fallback-Fehler, indem Sie den Typ ausschreiben. Der eigene Vorschlag des Compilers, etwa
make::<()>(), funktionierte im Test auf beiden Versionen. - Schalten Sie das Mindestalter jetzt ein. Drei Tage
global-min-publish-agein.cargo/config.tomlkosten wenig. Setzen Sie es, bevor Siecargo addausführen, denn dieser Befehl schreibt die gewählte Version inCargo.toml. - Räumen Sie ungenutzte Abhängigkeiten auf, bevor Sie sie verbieten. Beginnen Sie beim Standard
warn, entfernen Sie, was er findet, und stellen Sie dann in der CI aufdenyum. - Lesen Sie die Compatibility Notes. Sie nennen auch entfernte
box-Patterns, Unicode 18.0.0 und strengere Prüfungen von ARM-Target-Features. - Lesen Sie Cargos Build-Ordner nicht mehr direkt. Ihr Layout hat sich in 1.100 geändert, und laut Cargo-Changelog sollen Tools stattdessen Cargos JSON-Meldungen nutzen.
Quellen
- Announcing Rust 1.100.0 - Rust Blog
- Rust 1.100.0 release notes - GitHub - rust-lang/rust
- Cargo changelog: Cargo 1.100 - The Cargo Book
- Rust 1.100.0 released - LWN.net
Ähnliche Artikel

Rust 1.99.1 behebt FFI-bool-Fehlkompilierung und zwei Link-Fehler
Rust 1.99.1 behebt drei Regressionen aus 1.99.0, darunter x86_64-FFI-Funktionen, die bool-Werte außer 0 oder 1 zurückgeben konnten. Aktualisieren Sie mit rustup.

Rust 1.100 streicht Host-Tools für 32-Bit-Windows-Ziele
Rust 1.100 liefert keinen Compiler mehr für 32-Bit-Windows aus. Die i686-Ziele behalten die Standardbibliothek, sodass Cross-Compiling von 64-Bit-Windows weiter funktioniert.

Rust 1.99 stabilisiert die Definition von C-variadic-Funktionen
Rust 1.99.0, erschienen am 1. Oktober 2026, erlaubt in stabilem Rust die Definition von C-variadic-Funktionen wie printf, wechselt auf LLVM 23 und macht no_mangle bei Generics zum Fehler.