Programmiersprache: Rust 1.30 überarbeitet Modulsystem und erweitert Makros

Die Entwickler der Programmiersprache Rust haben die aktuelle Version 1.30.0 angekündigt. Diese ergänzt neue Arten prozeduraler Makros, legt deren Gültigkeit mit use fest und verbessert das Modulsystem.

Artikel veröffentlicht am , Kristian Kißling/Linux Magazin/
Rust ist in Version 1.30 verfügbar.
Rust ist in Version 1.30 verfügbar. (Bild: Luca 4891/Flickr.com/CC-BY 2.0)

Anfang dieses Jahres kündigte das Team der Programmiersprache Rust mit Rust 2018 ein großes Produktivitätsupdate an. Die kommende Version 1.31 soll dieses umsetzen, doch auch schon die nun verfügbare aktuelle Version 1.30 bringt eine für Rust 2018 wichtige Neuerung mit: So können nun Schlüsselworte als Identifikator (Identifier) genutzt werden, etwa als lokale Variablen oder Funktionsname. Das soll für den Übergang und die Mischung von Projekten aus Rust 2015 und Rust 2018 hilfreich sein.

Stellenmarkt
  1. Projektplaner/CAD-Systembetr- euer (m/w/d)
    EMS PreCab GmbH, Papenburg
  2. Systemadministrator (w/m/d) für die Verkehrszentrale Nord
    Die Autobahn GmbH des Bundes, Hamburg
Detailsuche

Neuzugänge für Rust 1.30 sind außerdem Attribut- und funktionsartige prozedurale Makros. Erstere ähneln angepassten Derive-Makros, ermöglichen es aber, anstelle des Attributs #[derive] selbst gewählte zusätzliche und neue Attribute zu definieren. Zudem funktionieren sie nicht nur für Structs und Enums, sondern auch für Funktionen.

Funktionsartige prozedurale Makros definieren Makros, die wie Funktionsaufrufe aussehen. Dies kann für den Fall von SQL etwa so aussehen:

  1. let sql = sql!(SELECT * FROM posts WHERE id=1);

Golem Karrierewelt
  1. IPv6 Grundlagen: virtueller Zwei-Tage-Workshop
    19./20.12.2022, virtuell
  2. Kotlin für Java-Entwickler: virtueller Zwei-Tage-Workshop
    16./17.03.2023, Virtuell
Weitere IT-Trainings

Das Makro, das an dem Ausrufezeichen zu erkennen ist, würde laut der Ankündigung der neuen Version das eingebettete SQL-Statement parsen und auf seine syntaktische Korrektheit hin überprüfen. Definieren lässt sich das Makro so:

  1. #[proc_macro]
  2. pub fn sql(input: TokenStream) -> TokenStream {...}

Hierbei folgt das funktionsartige Makro dem Derive-Makro, indem es den Code innerhalb der Klammern auswertet und den zu generierenden Code zurückgibt. Darüber hinaus fällt die bisherige Schreibweise #[macro_use] weg, um Makros von externen Crates zu verwenden. Sie ersetzt der Einsatz des Schlüsselwortes use.

Modulsystem verbessert

Für Version 1.30 haben die Entwickler zudem das Modulsystem verbessert beziehungsweise einige umständliche und ungewöhnliche Syntaxregeln verändert. So kam es bislang zu Problemen, wenn Entwickler eine Funktion in ein Submodul verschoben haben, ohne noch einmal explizit ein use voranzustellen. Neuerdings prüft Rust den Pfad, um automatisch zu erkennen, ob es sich um ein externes Crate handelt. Ist das der Fall, wird es ungeachtet der aktuellen Position in der Modulhierarchie verwendet.

Dazu passend bringt Rust 1.30 auch das crate-Schlüsselwort. So signalisiert use crate::foo::bar;, dass der Pfad zur Funktion bar aus dem Modul foo im Crate-Wurzelverzeichnis beginnt und nicht im aktuellen Verzeichnis. Das ermöglicht es etwa, die Funktion von Modul Nummer 1 aus der Funktion von Modul Nummer 2 heraus aufzurufen, ohne use verwenden zu müssen.

Weitere Änderungen und Neuerungen erläutert die offizielle Ankündigung zur aktuellen Version sowie die ausführlicheren Release Notes auf Github.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed


Aktuell auf der Startseite von Golem.de
Metaverse
EU blamiert sich mit interaktiver Onlineparty

Rund 387.000 Euro an Kosten, fünf Besucher auf der Onlineparty: Ein EU-Projekt wollte junge Menschen als Büroklammer tanzen lassen.

Metaverse: EU blamiert sich mit interaktiver Onlineparty
Artikel
  1. Elektromobilität: Hyundai zeigt Elektrosportwagen Ioniq 5 N
    Elektromobilität
    Hyundai zeigt Elektrosportwagen Ioniq 5 N

    Hyundai hat erstmals ein Video mit dem Ioniq 5 N veröffentlicht. Das besonders sportliche Fahrzeug soll die N-Marke beleben.

  2. High Purity in der Produktion: Unter Druck reinigen
    High Purity in der Produktion
    Unter Druck reinigen

    Ob Autos, Elektronik, Medizin oder Halbleiter: Die Reinhaltung bis in den Nanobereich wird immer wichtiger. Das stellt hohe Anforderung an Monitoring und Prozesslenkung.
    Ein Bericht von Detlev Prutz

  3. Patches: Anti-Ruckel-Updates für Pokémon und Callisto zeigen Wirkung
    Patches
    Anti-Ruckel-Updates für Pokémon und Callisto zeigen Wirkung

    Warum nicht gleich so? Für die von Bugs geplagten Computerspiele Pokémon Karmesin/Purpur und The Callisto Protocol gibt es Updates.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PS5-Bundle vorbestellbar • Amazon-Geräte bis -53% • Mindstar: AMD-Ryzen-CPUs zu Bestpreisen • Alternate: Kingston FURY Beast RGB 32GB DDR5-4800 146,89€ • Advent-Tagesdeals bei MediaMarkt/Saturn: u. a. SanDisk Ultra microSDXC 512GB 39€ • Thrustmaster Ferrari GTE Wheel 87,60€ [Werbung]
    •  /