28个稳定版本 (3个主要版本)
5.0.2 | 2023年3月10日 |
---|---|
5.0.1 | 2023年2月26日 |
4.15.0 | 2023年2月15日 |
2.1.1 | 2023年2月9日 |
1.0.5 | 2023年2月6日 |
#743 in 编码
每月下载量36
在 logtra 中使用
72KB
1.5K SLoC
Contra
Contra是Rust的配置文件加载器。
序列化和反序列化功能主要“受启发”(如果不是明显抄袭)自serde库。特别感谢'Josh Mcguigan'及其非常有帮助的文章Understanding-serde。
特性
- 加载和保存字面量
- 字符串字面量
- 数字字面量
- 枚举字面量
- 加载和保存结构体
- 原始结构体
- 嵌套结构体
- 加载集合
- 向量
- 映射
- 支持多种文件格式
- JSON
- TOML
- Cfg
使用方法
Contra添加了 derive 宏: Serialize,它为给定的结构体实现了 serialize 方法。Contra还添加了 derive 宏: Deserialize,它为给定的结构体实现了 deserialize 方法。这些函数最好通过 Persistent trait 来使用,该trait自动应用于所有既是可序列化又是可反序列化的结构体。该 Persistent trait 提供了 load 和 save 函数,根据给定的参数 path 选择合适的序列化器/反序列化器。
示例
#[derive(Serialize, Deserialize, Default)]
pub struct Player {
name: String,
health: i32,
dmg: f32,
items: Vec<Item>,
}
#[derive(Deserialize, Deserialize)]
pub struct Item {
name: String,
slot: u32,
stats: Vec<f32>,
}
fn main() {
let saved_player = Player::default();
player1::save("Player1.json").expect("failed to save player");
let loaded_player = Player::load("Player1.json").expect("failed to load player");
}
依赖
~1.5MB
~35K SLoC