Programmiersprache: Rust 1.53 erlaubt Unicode für Identifier

Im aktuellen Release implementieren Arrays zudem das IntoIterator-Trait und Oderverknüpfungen sind verschachtelt in Patterns erlaubt.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 55 Beiträge

(Bild: Callum Bainbridge / Shutterstock.com)

Von
  • Rainald Menge-Sonnentag

Im turnusmäßigen Sechswochenrhythmus ist Rust 1.53 erschienen. Die neue Version implementiert das IntoInterator-Trait für Arrays und erlaubt verschachtelte Oder-Patterns. Außerdem dürfen Identifier nun Unicode-Zeichen enthalten. Für die Paket-Registry Cargo gibt es eine Anpassung im Interesse nicht-rassistischer Sprache.

Nachdem Rust 1.51 die API std::array::IntoIter zum Iterieren über Arrays by Value statt by Reference eingeführt hat, implementieren Arrays im aktuellen Release das Trait IntoIterator. Somit ist das direkte Iterieren über Arrays by Value in folgender Form möglich:

for i in [1, 2, 3] {
    ..
}

Bisher mussten Entwicklerinnen und Entwickler das Iterieren by Reference durchführen und entweder &[1, 2, 3] oder den Methodenaufruf [1, 2, 3].iter() verwenden. Mit der Implementierung des Traits ist es erlaubt, Arrays an Methoden zu übergeben, die als Parameter T: IntoIterator erwarten. Derzeit ist unter der Haube noch ein Workaround erforderlich, der aber mit der Implementierung in Rust 2021 entfallen soll.

Identifier durften bisher nur aus ASCII-Zeichen bestehen. Das aktuelle Release erlaubt beliebige Unicode-Schriftzeichen auf Basis von Unicode 13. Der Compiler spuckt eine Warnung bei Zeichen aus, die einander ähnlich sind und somit zu Verwechslungen führen können. Wer glaubt, subtil seiner Meinung über Variablen über Emojis auszudrücken, wird enttäuscht: Diese sind innerhalb von Identifiern weiterhin untersagt. Den Einsatz von asiatischen und europäischen Sonderzeichen zeigt folgendes Beispiel aus dem Rust-Blog:

const BLÅHAJ: &str = "🦈";

struct 人 {
    名字: String,
}

let α = 1;

Das Rust-Team hat zudem die Pattern-Syntax erweitert. Sie erlaubt nun die verschachtelte Oder-Verknüpfung über |, sodass neuerdings Some(1 | 2) als Alternative für Some(1) | Some(2) erlaubt ist.

Neben den Neuerungen stabilisiert das Release zahlreiche APIs, darunter für Arrays neben dem IntoIterator-Trait die APIs array::from_ref und array::from_mut.

Nennenswert ist zudem, dass die Paket-Registry Cargo neuerdings als Standard-HEAD für Git-Repositories nicht mehr master als Standard erwartet. Damit entfällt für die Repositories, die bereits im Zuge der Umstellung auf nichtrassistische Sprache main statt master für den Hauptzweig verwenden, die explizite Angabe von branch = "main".

Weitere Details zu Rust 1.53 lassen sich dem Rust-Blog entnehmen. Die vollständige Liste der Änderungen und Neuerungen findet sich in den Release Notes. Wie üblich können Entwicklerinnen und Entwickler, die Rust bereits installiert haben, das aktuelle Release über rustup update stable herunterladen. Für diejenigen, die noch kein Rust verwenden, ist das rustup-Tool auf der Download-Seite separat verfügbar.

(rme)