Rust:
Работа с TOML

Как это сделать:

// 1. Добавьте крейт 'toml' в ваш Cargo.toml
// [зависимости]
// toml = "0.5"

// 2. Десериализация TOML в структуру в Rust
use toml::Value;

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

    let value = toml_content.parse::<Value>().unwrap();
    let host = value.get("server").unwrap().get("host").unwrap();
    let port = value.get("server").unwrap().get("port").unwrap();
    
    println!("Сервер работает на {}:{}", host, port);
    // Вывод: Сервер работает на "localhost":8080
}

Погружение в детали

TOML, что означает Tom’s Obvious, Minimal Language, был создан Томом Престон-Вернером в 2013 году. Его целью является повышение читабельности по сравнению с JSON или YAML для файлов конфигурации. Дизайн TOML сосредоточен на однозначном синтаксисе, минимализме и простом сопоставлении с типами данных.

Альтернативы TOML включают JSON, YAML и XML, но TOML выигрывает в сценариях, где критически важны читаемость человеком и редактирование файла не программистами. При работе с TOML в Rust, serde предоставляет прочную основу для сериализации и десериализации, используя трейты для безупречного сопоставления TOML со структурами Rust.

Одна из проблем при работе с TOML заключается в его строгости к типам и структуре. Программист должен определить хорошо структурированную систему типов Rust, отражающую схему данных TOML, чтобы эффективно использовать TOML в Rust.

См. также