Rust:
Trabalhando com TOML

Como fazer:

// 1. Incluir o crate 'toml' no seu Cargo.toml
// [dependencies]
// toml = "0.5"

// 2. Desserializar TOML em uma struct em Rust
use toml::Value;

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

    let valor = toml_content.parse::<Value>().unwrap();
    let host = valor.get("servidor").unwrap().get("host").unwrap();
    let port = valor.get("servidor").unwrap().get("port").unwrap();
    
    println!("O servidor está rodando em {}:{}", host, port);
    // Saída: O servidor está rodando em "localhost":8080
}

Aprofundamento

TOML, que significa Tom’s Obvious, Minimal Language (Linguagem Mínima e Óbvia do Tom), foi criada por Tom Preston-Werner em 2013. O objetivo é ser mais legível que JSON ou YAML para arquivos de configuração. O design do TOML foca em uma sintaxe inequívoca, minimalismo e mapeamento fácil para tipos de dados.

Alternativas para o TOML incluem JSON, YAML e XML, mas o TOML ganha em cenários onde a legibilidade humana e a edição de arquivos por não programadores é crucial. Ao trabalhar com TOML em Rust, serde fornece uma base sólida para serialização e desserialização, usando traits para mapear TOML em structs de Rust sem esforço.

Um desafio ao trabalhar com TOML é a sua rigidez em tipos e estrutura. O programador deve definir um sistema de tipos Rust bem estruturado que reflita o esquema dos dados TOML para utilizar efetivamente o TOML em Rust.

Veja Também