Apptiva Logo

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.

Publiziert am von Roman Schaller

Ü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.