Rust 1.40 ist erschienen

Rust 1.40 führt das Attribut “#[non-exhaustive]” ein, verbessert Macros und verwandelt Borrow-Check-Warnungen in Fehlermeldungen.

Structs mit öffentlichen Feldern zu programmieren, kann ein Dilemma sein, wenn der Entwickler noch nicht genau weiß, ob er nicht in der Zukunft weitere öffentliche Felder (“pub”) hinzufügen möchte. Entweder muss er die Felder als “private” markieren. Oder er ergänzt die Felder später manuell und macht dadurch abhängige Software kaputt, die von einer festen Zahl an öffentlichen Feldern ausgeht.

Das Attribut “#[non_exhaustive]” lässt sich vor ein Struct oder eine bestimmte Variante eines Enum stellen. Der Entwickler macht damit deutlich, dass diese Konstrukte in Zukunft womöglich noch weitere Einträge erhalten. Zugleich verhindert er es, dass Nutzer der Struct und Enum sich allein auf die aktuell vorhandenen Felder einschießen.

Fehler beim alten Borrow Checker

Weiterhin haben die Entwickler Macros und Attribute verbessert. Das betrifft Aufrufe von prozeduralen Macros in Typen-Kontexten und Macros in “extern {…}”-Blöcken. Zudem können funktionsartige Macros und Attribut-Macros nun “macro_rules” erzeugen.

NLL (Non-Lexical Lifetimes) wurden kürzlich auch für Rust 2015 eingeführt und soll Borrow Checker smarter und benutzerfreundlicher machen. Allerdings machten die Änderungen auch stabilen Code älterer Rust-Versionen kaputt, weshalb Rust zunächst mit Warnmeldungen reagierte. Wer in Rust 2015 weiterhin die alten und fehleranfälligen Borrow Checker verwendet, erhält nun neuerdings keine Warnungen mehr, sondern eine Fehlermeldung. Weitere kleinere Änderungen an Rust 1.40 erläutert detailliert der Blogpost.

E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben