0Pricing
Learn Rust Coding · Lektion

Andere Formate

TOML, YAML, bincode

Andere Formate ist eine kostenlose Learn Rust Coding-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn Rust Coding-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Jenseits von JSON

Der Kern von serde ist formatunabhängig. Deshalb funktioniert dieselbe abgeleitete Struktur mit vielen Formaten, indem Sie einfach das Format-Crate austauschen.

  • TOML für Konfigurationen
  • YAML für gut lesbare Daten
  • bincode für kompakte Binärdaten

Eine Struktur, viele Formate

Sie definieren die Struktur einmal. Jedes Format-Crate stellt für dieselben Serialize- und Deserialize-Implementierungen eigene Entsprechungen zu to_string / from_str bereit.

use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize)]
struct Config {
    name: String,
    port: u16,
}

TOML

TOML ist für Konfigurationen beliebt (auch Cargo.toml verwendet es). Das toml-Crate serialisiert und parst TOML.

use serde::Serialize;

#[derive(Serialize)]
struct Config { name: String, port: u16 }

fn to_toml(c: &Config) -> String {
    toml::to_string(c).unwrap()
}

TOML parsen

Lesen Sie eine TOML-Konfiguration mit toml::from_str zurück in Ihre Struktur.

use serde::Deserialize;

#[derive(Deserialize)]
struct Config { name: String, port: u16 }

fn parse(s: &str) -> Config {
    toml::from_str(s).unwrap()
}

YAML

YAML eignet sich für von Menschen bearbeitete Daten mit Verschachtelungen. Verwenden Sie ein Crate wie serde_yaml mit derselben API-Struktur.

use serde::Serialize;

#[derive(Serialize)]
struct Config { name: String, port: u16 }

fn to_yaml(c: &Config) -> String {
    serde_yaml::to_string(c).unwrap()
}

bincode

bincode ist ein kompaktes Binärformat – ideal zum Cachen oder Übertragen, wenn Größe und Geschwindigkeit wichtig sind und Menschen die Daten nie lesen.

use serde::Serialize;

#[derive(Serialize)]
struct Config { name: String, port: u16 }

fn to_bytes(c: &Config) -> Vec<u8> {
    bincode::serialize(c).unwrap()
}

Ein Format auswählen

Wählen Sie abhängig von der Zielgruppe:

  • Verschachtelte Konfigurationen für Menschen: TOML oder YAML
  • Web-APIs: JSON
  • Interner binärer Speicher oder Transport: bincode

Formatwahl modellieren

Die Entscheidung ist lediglich eine Zuordnung von Anwendungsfall zu Format. Dieses ausführbare Beispiel bildet diese Auswahl-Logik ab.

fn pick_format(use_case: &str) -> &str {
    match use_case {
        "config" => "TOML",
        "api" => "JSON",
        "cache" => "bincode",
        _ => "JSON",
    }
}

fn main() {
    println!("{}", pick_format("config"));
    println!("{}", pick_format("cache"));
    println!("{}", pick_format("api"));
}

Bytes im Roundtrip

Binärformate ermöglichen einen Roundtrip: Sie serialisieren in Bytes und deserialisieren anschließend zurück in dieselbe Struktur. Dieses ausführbare Beispiel modelliert das Konzept eines Roundtrips anhand der Byte-Länge.

fn encode(name: &str) -> Vec<u8> {
    name.as_bytes().to_vec()
}

fn decode(bytes: &[u8]) -> String {
    String::from_utf8(bytes.to_vec()).unwrap()
}

fn main() {
    let bytes = encode("Alice");
    println!("len={}", bytes.len());
    println!("back={}", decode(&bytes));
}

Formatspezifische Besonderheiten

Formate unterscheiden sich in ihren Möglichkeiten. TOML erlaubt null nicht und benötigt für Verschachtelungen Tabellen; YAML unterstützt Anker; bincode ist nicht selbstbeschreibend, daher müssen beide Seiten denselben Typ kennen.

Attribute gelten weiterhin

Die von Ihnen gelernten #[serde(...)]-Attribute (rename, default, skip) funktionieren mit allen Formaten, da sie auf der serde-Ebene und nicht auf der Formatebene arbeiten.

use serde::Serialize;

#[derive(Serialize)]
#[serde(rename_all = "kebab-case")]
struct Config { max_connections: u32 }

Kurzer Test

Testen Sie Ihr Verständnis anderer Formate.

Zusammenfassung

Sie haben weitere serde-Formate kennengelernt:

  • Eine abgeleitete Struktur funktioniert mit TOML, YAML, JSON und bincode
  • Jedes Format-Crate bietet vertraute APIs nach dem Muster to_string / from_str
  • Wählen Sie nach Zielgruppe: Konfiguration, API oder binärer Speicher
  • serde-Attribute gelten für jedes Format

Damit sind der Serde-Kurs und die Rust-Reihe abgeschlossen.

Häufig gestellte Fragen

Ist die Lektion „Andere Formate“ kostenlos?

Ja — der vollständige Text von „Andere Formate“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn Rust Coding-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn Rust Coding-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Andere Formate“?

TOML, YAML, bincode Du übst Learn Rust Coding mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Learn Rust Coding zu starten?

Keine Vorkenntnisse erforderlich. Learn Rust Coding auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Andere Formate“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Learn Rust Coding-Lektion Code schreiben und ausführen?

Ja. Jede Learn Rust Coding-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Serialisieren und Deserialisieren
  2. Arbeiten mit JSON
  3. Benutzerdefinierte Serialisierung
  4. Andere Formate
← Zurück zu Learn Rust Coding