Rust:
Werken met YAML

Hoe te:

Om YAML in Rust te parsen en te genereren, gebruiken we de serde_yaml crate, die leunt op serde voor serialisatie/deserialisatie.

Voeg eerst afhankelijkheden toe aan je Cargo.toml:

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_yaml = "0.8"

Laten we nu een Rust struct naar YAML serialiseren:

use serde::{Serialize, Deserialize};
use serde_yaml;

#[derive(Debug, Serialize, Deserialize)]
struct Config {
    debug: bool,
    environment: String,
    port: u16,
}

fn main() -> serde_yaml::Result<()> {
    let config = Config {
        debug: true,
        environment: "development".to_string(),
        port: 8080,
    };

    // Serialiseren naar YAML
    let yaml_string = serde_yaml::to_string(&config)?;
    println!("{}", yaml_string);
    // Uitvoer:
    // ---
    // debug: true
    // environment: "development"
    // port: 8080

    Ok(())
}

Om YAML te deserialiseren naar een Rust struct:

fn main() -> serde_yaml::Result<()> {
    let yaml_string = r#"
    debug: true
    environment: "development"
    port: 8080
    "#;

    let config: Config = serde_yaml::from_str(&yaml_string)?;
    println!("{:?}", config);
    // Uitvoer:
    // Config { debug: true, environment: "development", port: 8080 }

    Ok(())
}

Diepere Duik

YAML is in 2001 gestart als een gebruiksvriendelijk alternatief voor XML. In tegenstelling tot JSON ondersteunt YAML commentaren en is het minder lawaaierig, waardoor het een favoriet is voor configuratiebestanden. Rust’s serde_yaml benut serde voor gegevensconversie, waardoor hoge compatibiliteit en flexibiliteit worden gewaarborgd. Hoewel serde_json vaker wordt gebruikt vanwege de alomtegenwoordigheid van JSON in API’s, blinkt serde_yaml uit voor lokale configuratie- en gegevensbestanden. Het is het vermelden waard dat overmatig complexe YAML-functies zelden worden gebruikt en soms ontmoedigd vanwege potentiële parseerproblemen.

Zie Ook

Voor verdere lezing en meer complexe gebruiksscenario’s: