11 个版本

0.2.0 2023年7月26日
0.2.0-alpha.12023年7月18日
0.1.6 2023年7月12日
0.1.5 2023年2月3日
0.1.4 2023年1月29日

#2748解析器实现

MPL-2.0 许可证

97KB
3K SLoC

tot-rs

Tot 的 Rust 实现。

注意:严重处于开发阶段

已完成的特性

  • 序列化
  • 反序列化
    • 通过 nom 实现了基本反序列化。尚不支持 S-表达式

许可证

MPL-2.0


lib.rs:

Tot 的 Rust 实现。

托特是一种旨在手动编辑的配置语言。

特性

  • 基于空白格的格式,不需要 缩进
  • 简单、有限的语法
  • 类似 JSON 的对象和列表
  • 引用值(WIP)
  • 文件导入(WIP)
  • 非图灵完备的 Lisp 样式表达式(WIP)
  • 兼容于
  • JSON
  • YAML
  • TOML

示例

use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize)]
struct Person {
name: String,
age: u32,
}

fn main() {
let person = Person {
name: "youwin".to_string(),
age: 100
};

let output = tot::to_string(&person).unwrap();

assert_eq!("\
name \"youwin\"
age 100.0
", output);

let person = tot::from_str::<Person>(output.as_str()).unwrap();

assert_eq!(person.name, "youwin");
assert_eq!(person.age, 100);
}

依赖项

~1.3–2.2MB
~45K SLoC