Rust
Rust ist eine Programmiersprache von Mozilla, die seit 2015 in einer stabilen Version vorliegt. Im Stack Overflow Survey steht sie seit 2016 in der Kategorie Most Loved Programming Language zuoberst. Dies war der Anlass für mich, einmal einen Blick darauf zu werfen.
Über Rust
Die wichtigsten Eigenschaften der Sprache sind:
- Typsicher
- Kompiliert in ein Binary
- Wir direkt auf dem Prozessor ausgeführt und braucht keine vorgängig installierte Runtime
- Memory-Management über Ownership-Modell (statt Garbage-Collector wie JavaScript, Java oder .NET)
- Modernes Build- und Dependency-System “cargo”
- Integriertes Testing-Framework
Wie man ein Projekt baut
Mit dem Befehl cargo build
werden die Dependencies heruntergeladen und das Binary gebaut.
Wie man ein Projekt ausführt
Mit cargo run
kann man auf einer Entwicklungsmaschine dsa Projekt gleich ausführen.
Verteilung
Am einfachsten ist es, mit cargo build --release
ein Binary für die vorliegende Platform zu erstellen und dies zur Verfügung zu stellen. Im Falle einer Library ist es etwas eleganter, dies über crates.io zu tun. Das ist mit npm-Packages zu vergleichen. Es gibt auch Tools, die es uns ermöglichen, Windows-msi-Installer, Debian-Packages, Snaps oder andere Packages zu generieren.
Beispiel-Code
Natürlich haben wir uns auch etwas Beispielcode angeschaut. Folgender Code liest eine Watson-Datei ein, gibt die Anzahl der Einträge und das letzte Projekt aus.
use serde_json::Value;
use std::env;
fn main() {
// Umgebungsvariable lesen
let watson_dir = env::var("WATSON_DIR").unwrap();
// Ganze Datei einlesen
let json_as_text = std::fs::read_to_string(&(watson_dir + "/frames")).unwrap();
// als JSON interpretieren
let json = serde_json::from_str::<Value>(&json_as_text).unwrap();
// Mit JSON arbeiten
let item_count = json.as_array().unwrap().len();
println!("You have {item_count} items.");
let last_entry = json.as_array().unwrap().last().unwrap();
let role = &last_entry.as_array().unwrap()[2];
let role_as_string = role.as_str().unwrap();
println!("The last entry is: {role_as_string}")
}
Rust-Profis wüssten sicher viel zu bemängeln, so z.B. das fehlende Fehlerhandling. Ziel war es hier aber in erster Linie zu zeigen, dass man mit Rust mit relativ wenig Code eine Datei einlesen und verarbeiten kann.