编程语言配置文件格式TOML

liftword3周前 (05-28)技术文章6

前言

互联网项目常用的配置文件格式比较丰富,比如xml,yml,json,dotenv,ini等等。今天再给大家分享一种在Rust中常用的一种配置文件格式,TOML。

TOML (Tom's Obvious, Minimal Language) 是一种易于阅读和编写的配置文件格式。它旨在解决配置文件中的一些常见问题,如JSON不支持注释和复杂的类型结构。TOML被设计为简单、直观且易于解析。

庐山真面目

一起来看一个案例。一个基本的TOML文件看起来像这样:

title = "TOML Example"

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates

[database]
server = "192.168.1.1"
ports = [ 8001, 8001, 8002 ]
connection_max = 5000
enabled = true

[servers]

[ servers.alpha ]
ip = "10.0.0.1"
dc = "eqdc10"

[ servers.beta ]
ip = "10.0.0.2"
dc = "eqdc10"

[clients]
data = [ [1, 2], [1, 2] ]

# Line breaks between key-value pairs are OK.
hosts = [
  "alpha",
  "omega"
]

在上面的例子中:

- `title` 是一个字符串值。

- `[owner]` 和 `[database]` 是表(table),可以理解为字典或哈希映射。

- `[database.ports]` 是一个整数数组。

- `[servers]` 和 `[clients]` 是包含其他表的表。

- `#` 开头的行是注释,会被忽略。

数据类型

TOML支持的数据类型包括:

- 字符串(`"string"`)

- 整数(123)

- 浮点数(123.45)

- 布尔值(true, false)

- 数组([1, 2, 3])

- 表([table])

- 日期时间(1979-05-27T07:32:00-08:00)

TOML还支持内联表(inline tables)和数组表(array of tables)。例如:

# Inline table
fruit = { name = "apple", color = "red" }

# Array of inline tables
fruits = [
  { name = "apple", color = "red" },
  { name = "banana", color = "yellow" }
]

Rust使用TOML案例

下面的代码给出了Rust如何使用TOML。首先要在Crago.toml中添加toml依赖。

[dependencies]
toml = "0.5"

然后编写解析toml的代码

use std::fs::File;
use std::io::Read;
use toml;

// 定义一个结构体来匹配TOML配置文件的内容
#[derive(Debug, Deserialize)]
struct Config {
    title: String,
    owner: Owner,
    database: Database,
}

#[derive(Debug, Deserialize)]
struct Owner {
    name: String,
    dob: String,
}

#[derive(Debug, Deserialize)]
struct Database {
    server: String,
    ports: Vec<u16>,
    connection_max: u32,
    enabled: bool,
}

fn main() -> std::io::Result<()> {
    // 读取TOML配置文件
    let mut file = File::open("config.toml")?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;

    // 解析TOML字符串为Rust结构体
    let config: Config = toml::from_str(&contents)?;

    // 打印解析后的配置信息
    println!("Configuration: {:?}", config);

    Ok(())
}

其他语言对TOML的支持

很多其他语言也都支持TOML配置文件格式,比如Python,Golang等等。篇幅有限,不在本篇给出具体案例。

相关文章

python入门 输入与输出——读和写文件

以下是Python文件读写的入门指南,包含基础操作、安全写法及实用技巧:一、文件操作基础步骤打开文件 → 读写操作 → 关闭文件(务必确保最后关闭文件,避免资源泄露)二、文件读取1. 基本读取# 方法...

小结:Python字典生成式、集合生成式、生成器用法实例分析

本文实例讲述了Python字典生成式、集合生成式、生成器用法。分享给大家供大家参考,具体如下:字典生成式:跟列表生成式一样,字典生成式用来快速生成字典,不同的是,字典需要两个值集合生成式:集合生成式格...

Python 字典键的特性详解

字典(dict)是 Python 中非常重要的数据结构,而字典的键(key)有一些独特的特性和要求。以下是关于字典键的详细说明:1.键的唯一性字典中的键必须是唯一的,如果尝试使用相同的键添加多个值,后...

如何在Python中按值对字典进行排序?

大家在使用Python处理数据时,经常会用到字典这种数据结构。有时候,我们需要对字典按值进行排序,这该怎么做呢?今天咱们就来详细探讨一下这个问题。字典排序的基础认知在Python里,字典本身是没有顺序...

全能OCR神器!GOT-OCR2.0,带你轻松搞定复杂文档与场景识别

文 | 乐观的枫叶编辑 | 乐观的枫叶你有没有过这样的时刻?面对着手机拍摄的文档照片,或者电脑里尘封已久的扫描文件,想要提取其中的文字信息,却只能一字一句地手动敲击键盘,效率低到让人抓狂时代飞速发展,...