31 个稳定版本 (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.1.1 2023年2月6日

#6 in #xtra

Download history 4/week @ 2024-04-04 2/week @ 2024-05-16 2/week @ 2024-05-23 2/week @ 2024-06-06 2/week @ 2024-06-13

每月下载 97
2 个 crate 中使用 (通过 contra)

自定义许可

17KB
166

Contra

Publish Version Lint, Build and Test

Contra 是 Rust 的配置文件加载器。

序列化和反序列化在很大程度上“受启发”(如果不是明显复制)自 serde crate。特别感谢 'Josh Mcguigan' 和他的非常有益的文章 Understanding-serde

功能

  • 加载和保存字面量
    • 字符串字面量
    • 数值字面量
    • 枚举字面量
  • 加载和保存结构体
    • 原始结构体
    • 嵌套结构体
  • 加载集合
    • 向量
    • 映射
  • 支持多种文件格式
    • JSON
    • TOML
    • Cfg

用法

Contra 添加了 derive 宏:Serialize,它为给定的结构体实现了 serialize 方法。Contra 添加了 derive 宏:Deserialize,它为给定的结构体实现了 deserialize 方法。这些函数最好通过 Persistent trait 使用,该 trait 自动应用于所有既是可序列化的也是可反序列化的结构体。Persistent trait 提供了 loadsave 函数,根据作为参数提供的 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
~36K SLoC