# Rust 1.94.0: Stabilisierung von array_windows, include in Konfigurationen und Wechsel zu TOML 1.1
Rust 1.94.0 ist erschienen und bringt mehrere bedeutende Verbesserungen für Entwickler mit sich. Zu den wichtigsten Neuerungen gehören die Methode array_windows zum Iterieren über Arrays fester Länge, die Unterstützung für den include-Schlüssel in Cargo-Konfigurationsdateien und der Umstieg auf TOML 1.1. So erleichtern diese Änderungen Ihre Arbeit.
Die Methode array_windows: Arbeiten mit Fenstern fester Länge
In der neuen Rust-Version wurde die Methode array_windows für Slices stabilisiert. Sie ermöglicht das Iterieren über eine Slice mit Fenstern fester Länge und macht manuelles Indexieren sowie Bounds-Checking überflüssig. Im Gegensatz zur windows-Methode, die Slices dynamischer Länge (&[T]) zurückgibt, liefert array_windows Referenzen auf Arrays fester Länge (&[T; N]).
Das ist besonders nützlich bei Aufgaben, bei denen aufeinanderfolgende Elemente mit einer bekannten Fenstergröße verarbeitet werden müssen. Zum Beispiel, um das ABBA-Muster (zwei unterschiedliche Buchstaben gefolgt von ihrer umgekehrten Reihenfolge) in einem String zu finden, können Sie den folgenden Code verwenden:
fn has_abba(s: &str) -> bool {
s.as_bytes()
.array_windows()
.any(|[a1, b1, b2, a2]| (a1 != b1) && (a1 == a2) && (b1 == b2))
}
Der Compiler schließt die Fensterlänge (4) automatisch aus dem Destructuring-Muster im Closure. Bei windows(4) müssten Sie die Indizes manuell prüfen, was weniger sicher und lesbar ist.
Cargo-Konfiguration mit dem include-Schlüssel verwalten
Cargo unterstützt nun den include-Schlüssel in Konfigurationsdateien (.cargo/config.toml). Diese Funktion vereinfacht die Organisation, das Teilen und das Verwalten von Konfigurationen über Projekte und Umgebungen hinweg.
Der include-Schlüssel kann ein Array von Pfaden oder eine Inline-Tabelle mit zusätzlichen Optionen sein. Zum Beispiel:
# Array von Pfaden
include = [
"frodo.toml",
"samwise.toml",
]
# Inline-Tabellen für Feinabstimmung
include = [
{ path = "required.toml" },
{ path = "optional.toml", optional = true },
]
Die Option optional = true erlaubt anzugeben, dass eine Datei in manchen Umgebungen fehlen darf (z. B. auf der lokalen Maschine eines Entwicklers). Das erhöht die Flexibilität der Konfiguration, ohne separate Branches zu benötigen.
Wechsel zu TOML 1.1: Was hat sich geändert
Cargo unterstützt nun vollständig TOML 1.1 für Manifeste und Konfigurationsdateien. Dazu gehören mehrere praktische Verbesserungen:
- Möglichkeit, Inline-Tabellen über mehrere Zeilen mit nachfolgenden Kommas zu spannen.
- Neue Escape-Sequenzen für Strings:
\xHHund\e. - Optionale Sekunden in Zeitdarstellungen (Standard: 0).
Beispiel für eine mehrzeilige Inline-Tabelle:
serde = {
version = "1.0",
features = ["derive"],
}
Hinweis: Die Verwendung neuer TOML-1.1-Features in Cargo.toml erhöht die minimale unterstützte Rust-Version (MSRV) auf eine, die den neuen Cargo-Parser erfordert. Cargo schreibt das Manifest beim Veröffentlichen eines Crates jedoch automatisch in ein mit älteren Parsers kompatibles Format um. So können Sie die Unterstützung früherer Rust-Versionen für die Nutzer Ihres Crates aufrechterhalten.
Stabilisierte APIs: Vollständige Liste
Die Version 1.94.0 stabilisiert zahlreiche zuvor instabile APIs. Hier die wichtigsten:
- Slice-Methoden:
<[T]>::array_windows,<[T]>::element_offset LazyCell-Methoden:get,get_mut,force_mutLazyLock-Methoden:get,get_mut,force_mut- Konvertierung:
impl TryFrom<char> for usize Peekable-Methoden:next_if_map,next_if_map_mut- Intrinsic-Funktionen für x86 (AVX-512 FP16) und AArch64 (NEON FP16), außer denen, die vom instabilen
f16-Typ abhängen - Mathematikkonstanten:
f32::consts::EULER_GAMMA,f64::consts::EULER_GAMMA,f32::consts::GOLDEN_RATIO,f64::consts::GOLDEN_RATIO f32::mul_add- undf64::mul_add-Methoden sind nun inconst-Kontexten stabil
Diese Änderungen erweitern die Möglichkeiten der Standardbibliothek und machen Code ausdrucksstärker.
Wichtige Erkenntnisse für Entwickler
- Vereinfachte Fensterbehandlung: Die Methode
array_windowsreduziert Boilerplate-Code bei festen Fenstern, verbessert Sicherheit und Lesbarkeit. - Konfigurationsflexibilität: Der
include-Schlüssel in Cargo ermöglicht modulare Zusammenstellung von Konfigurationen, was besonders bei großen Projekten und Teams nützlich ist. - TOML-1.1-Kompatibilität: Neue TOML-Features machen Konfigurationsdateien bequemer, achten Sie aber bei Verwendung in
Cargo.tomlauf die MSRV. - Erweiterung der Standardbibliothek: Die Stabilisierung neuer APIs – einschließlich Mathematikkonstanten und Iterator-Methoden – vereinfacht alltägliche Aufgaben.
Ein Update auf Rust 1.94.0 wird für alle Entwickler empfohlen, um von diesen Verbesserungen zu profitieren. Verwenden Sie dazu rustup update stable.
— Editorial Team
Noch keine Kommentare.