Abo
  • Services:
Anzeige
Rust ist benannt nach dem "rostigem" Pilzbefall auf Pflanzen.
Rust ist benannt nach dem "rostigem" Pilzbefall auf Pflanzen. (Bild: Wikimedia:Smartse - CC-BY-SA 3.0)

Makros, Cargo und Ausblick

Makros generieren Code zur Übersetzungszeit, was den Programmieraufwand bisweilen erheblich reduziert. Diese werden wie etwa println ähnlich wie Funktionen verwendet. Jedoch folgt dem Namen des Makros ein Ausrufezeichen wie in Zeile 8 im nächsten Beispiel. Noch deutlicher unterscheiden sich Makros von Funktionen aber in ihrer Syntax.

Makros (macro.rs)

01 macro_rules! length {
02   ($expression:expr) => (
03     println!("Die Länge des Ausdrucks beträgt: {}", \
                        (stringify!($expression)).len())
04   )
05 }
06
07 fn main() {
08   length!(7 + 4);
09 }

Die ersten fünf Zeilen zeigen den Code des aufgerufenen Makros length. Nach dem Schlüsselwort macro_rules! folgt der Name des Makros. Rust gleicht ($expression:expr) bei jedem Aufruf mit dem übergebenen Parameter ab. Das Muster ist jedoch so allgemein, dass es auf jeden Wert passt. Zugleich speichert es den übergebenen Wert in der Metavariablen $expression. Die Angabe :expr qualifiziert den Wert in der Variablen als Rust-Ausdruck.

Anzeige

Verzeichnet Rust beim Abgleich einen Treffer, wertet ihn der Block ab Zeile 2 aus. In Zeile 3 wandelt das Makro stringify den Wert aus der Metavariablen in eine Zeichenkette um, deren Länge wie zuvor println ausgibt. Wer die Datei macro.rs mit dem Befehl rustc macro.rs && ./macro kompiliert und ausführt, sieht als Resultat die Meldung Die Länge des Ausdrucks beträgt: 5.

Cargo

Analog zu Gems unter Ruby oder Pip unter Python hat auch Rust mit Cargo ein eigenes Paketverwaltungsprogramm. Es erzeugt und verwaltet Rust-Pakete von der Kommandozeile aus. Derzeit bietet die Rust-Community etwa 2.200 fertige Pakete an.

Auf der Webseite des Projekts steht die letzte stabile Binärversion des Rust-Compilers bereit, bei der Installation wird Cargo gleich mitgeliefert. Der Befehl cargo new test baut das Verzeichnissystem als Gerüst für das Rust-Paket test unter dem gleichnamigen Ordner.

Die darin befindliche Datei Cargo.toml sichert die Metadaten zum Paket. Github beschreibt in der Spezifikation das Format der verwendeten Sprache Toml. Die Konfigurationsdatei enthält neben dem Namen, der Version und dem Autor gegebenenfalls auch Abhängigkeiten des Pakets im INI-Stil.

Cargo.toml

01 [package]
02 name = "test"
03 version = "0.1.0"
04 authors = ["pa"]

Die Datei lib.rs speichert den Rust-Code des Pakets, der zu einem späteren Zeitpunkt und mit Hilfe der Anweisung use test; in Rust-Programme eingebunden wird. Anschließend muss in das Paketverzeichnis gewechselt werden, und das Projekt wird über cargo build mit dem Rust-Compiler rustc kompiliert.

lib.rs

01 #[test]
02 fn gt_zero() {
03   assert!(1>0);
04 }

Mittels cargo test können Testfunktionen wie beispielsweise die Funktion gt_zero() aus dem Paket herausgefiltert und anschließend ausgeführt werden. Die Rust-Option #[test] in Zeile 1 weist gt_zero() als Testfunktion aus. Sie generiert - unterstützt vom Makro assert - das Testergebnis für den Test 1 > 0.

Ausblick

Rust ist eine ambitionierte System-Programmiersprache mit einer schnell wachsenden Community. Das Interesse an der Sprache belegen unter anderem die rund 2.300.000 Downloads der öffentlich verfügbaren Rust-Pakete. Neben Cargo stehen mit Solidoak oder Rust-DT eine IDE sowie ein Eclipse-Plugin für Rust-Entwickler bereit. Wer will, entwirft zudem mit den Webapplication-Frameworks Ironframework und Nickel.rs schon jetzt erste Webanwendungen.

Welchen Marktanteil Rust längerfristig erringen kann, hängt aber sicherlich auch vom erfolgreichen Einsatz im Mozilla-Projekt ab. Eine erste stabile Version von Firefox, die auf Rust-Code basiert, wäre sicherlich ein willkommener Einstieg für den Newcomer.

 Musterhaft und klassenlos

eye home zur Startseite
Baron Münchhausen. 19. Jul 2015

Deswegen hat er auch "war" hinzugefügt :)

grorg 18. Jul 2015

Wenn du damit auf das "Zitat" von Bill Gates ansprichst - das gab es nie und ist frei...

grorg 18. Jul 2015

Wir reden hier über eine Programmiersprache und nicht Picasso ....... zeig doch mal, wie...

esgeh 17. Jul 2015

In Rust wird dir genausowenig wie in C eine "Indirektion" aufgezwungen. Wenn du...

flasherle 17. Jul 2015

nur das bei reeller umsetzung das ganze durch die namensgebung leicht lesbar wird...



Anzeige

Stellenmarkt
  1. Daimler AG, Sindelfingen
  2. DATAGROUP Inshore Services GmbH, Berlin, Leipzig, Rostock
  3. Media-Saturn-Holding GmbH, Ingolstadt
  4. BST eltromat International Leopoldshöhe GmbH, Bielefeld


Anzeige
Top-Angebote
  1. (-40%) 17,99€
  2. 15€ sparen mit Gutscheincode GTX15 (Bestpreis laut Preisvergleich)
  3. (u. a. 3x B12-PS 120mm für 49,90€, 3x B14-1 140mm für 63,90€ statt 71,70€)

Folgen Sie uns
       


  1. DNS NET

    Erste Kunden in Sachsen-Anhalt erhalten 500 MBit/s

  2. Netzwerk

    EWE reduziert FTTH auf 40 MBit/s im Upload

  3. Rahmenvertrag

    VG Wort will mit Unis neue Zwischenlösung für 2017 finden

  4. Industriespionage

    Wie Thyssenkrupp seine Angreifer fand

  5. Kein Internet

    Nach Windows-Update weltweit Computer offline

  6. Display Core

    Kernel-Community lehnt AMDs Linux-Treiber weiter ab

  7. Test

    Mobiles Internet hat viele Funklöcher in Deutschland

  8. Kicking the Dancing Queen

    Amazon bringt Songtexte-Funktion nach Deutschland

  9. Nachruf

    Astronaut John Glenn im Alter von 95 Jahren gestorben

  10. Künstliche Intelligenz

    Go Weltmeisterschaft mit Menschen und KI



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Großbatterien: Sechs 15-Megawatt-Anlagen sollen deutsches Stromnetz sichern
Großbatterien
Sechs 15-Megawatt-Anlagen sollen deutsches Stromnetz sichern
  1. HPE Hikari Dieser Supercomputer wird von Solarenergie versorgt
  2. Tesla Desperate Housewives erzeugen Strom mit Solarschindeln
  3. Solar Roadways Erste Solarzellen auf der Straße verlegt

Google, Apple und Mailaccounts: Zwei-Faktor-Authentifizierung richtig nutzen
Google, Apple und Mailaccounts
Zwei-Faktor-Authentifizierung richtig nutzen
  1. Bugs in Encase Mit dem Forensik-Tool die Polizei hacken
  2. Red Star OS Sicherheitslücke in Nordkoreas Staats-Linux
  3. 0-Day Tor und Firefox patchen ausgenutzten Javascript-Exploit

Steep im Test: Frei und einsam beim Bergsport
Steep im Test
Frei und einsam beim Bergsport
  1. PES 2017 Update mit Stadion und Hymnen von Borussia Dortmund
  2. Motorsport Manager im Kurztest Neustart für Sportmanager
  3. NBA 2K17 10.000 Schritte für Ingame-Boost

  1. Re: Was aufrüsten für WoW?

    Moe479 | 07:38

  2. Re: Gut

    NaruHina | 07:33

  3. Re: Mehr macht bei EWE eh keinen Sinn

    NaruHina | 07:22

  4. Re: "Preise und Leistungen der Endprodukte sind...

    Hood-Boy | 07:01

  5. Re: Der Hit ist doch aber der Nachtrag

    blaub4r | 06:17


  1. 18:40

  2. 17:30

  3. 17:13

  4. 16:03

  5. 15:54

  6. 15:42

  7. 14:19

  8. 13:48


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel