Rust:
Lavorare con TOML

Come fare:

// 1. Includi il crate 'toml' nel tuo Cargo.toml
// [dipendenze]
// toml = "0.5"

// 2. Deserializza TOML in una struct in Rust
use toml::Value;

fn main() {
    let contenuto_toml = r#"
        [server]
        host = "localhost"
        porta = 8080
    "#;

    let valore = contenuto_toml.parse::<Value>().unwrap();
    let host = valore.get("server").unwrap().get("host").unwrap();
    let porta = valore.get("server").unwrap().get("porta").unwrap();
    
    println!("Il server è attivo su {}:{}", host, porta);
    // Output: Il server è attivo su "localhost":8080
}

Approfondimento

TOML, che sta per Tom’s Obvious, Minimal Language, è stato creato da Tom Preston-Werner nel 2013. Il suo obiettivo è essere più leggibile di JSON o YAML per i file di configurazione. Il design di TOML si concentra su una sintassi univoca, minimalismo e mappatura semplice sui tipi di dati.

Le alternative a TOML includono JSON, YAML e XML, ma TOML prevale in scenari dove la leggibilità umana e la modifica dei file da parte di non programmatori è cruciale. Quando si lavora con TOML in Rust, serde offre una solida base per la serializzazione e deserializzazione, usando traits per mappare TOML sulle struct di Rust senza sforzo.

Una sfida nell’utilizzo di TOML è la sua rigidezza sui tipi e sulla struttura. Il programmatore deve definire un sistema di tipi Rust ben strutturato che rifletta lo schema dei dati TOML per utilizzare efficacemente TOML in Rust.

Vedi Anche