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:
- Serde’s officiële documentatie: https://serde.rs/
- Serde YAML crate documentatie: https://docs.rs/serde_yaml/latest/serde_yaml/
- YAML officiële specificatie: https://yaml.org/spec/1.2/spec.html
- Het boek “The Rust Programming Language”: https://doc.rust-lang.org/book/