Ü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](http://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.