Rust:
使用TOML

如何操作:

// 1. 在你的 Cargo.toml 中包含 'toml' 包
// [dependencies]
// 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(汤姆的明显的、最小的语言),由 Tom Preston-Werner 在 2013 年创造。它旨在比 JSON 或 YAML 更可读,用于配置文件。TOML 的设计重点在于语法的无歧义性、最小主义以及轻松映射到数据类型上。

TOML 的替代品包括 JSON、YAML 和 XML,但在需要非程序员进行文件编辑和人类可读性至关重要的场景下,TOML 胜出。在 Rust 中使用 TOML 时,serde 提供了序列化和反序列化的坚实基础,通过 traits 无缝地将 TOML 映射到 Rust 的结构体上。

在使用 TOML 时面临的一个挑战是其对类型和结构的严格性。程序员必须定义一个反映 TOML 数据模式的良好结构化的 Rust 类型系统,才能有效利用 Rust 中的 TOML。

另请参阅