6个版本

0.2.3 2019年12月22日
0.2.2 2019年12月22日
0.2.0 2019年8月13日
0.1.2 2019年7月31日

#716 in 编码

Download history 22/week @ 2024-02-19 20/week @ 2024-02-26 13/week @ 2024-03-04 18/week @ 2024-03-11

73 个月下载量
3 crates 中使用

MIT/Apache

125KB
3.5K SLoC

muon-rs

一个用于MuON数据格式的Rust库,使用serde

有关更多信息,请参阅文档

反序列化

反序列化数据最简单的方法是在结构体上派生Deserialize。然后使用from_函数之一。

示例

MuON文件

book: Pale Fire
  author: Vladimir Nabokov
  year: 1962
  character: John Shade
    location: New Wye
  character: Charles Kinbote
    location: Zembla
book: The Curious Incident of the Dog in the Night-Time
  author: Mark Haddon
  year: 2003
  character: Christopher Boone
    location: Swindon
  character: Siobhan

Rust代码

#[derive(Debug, Deserialize, Serialize)]
struct BookList {
    book: Vec<Book>,
}

#[derive(Debug, Deserialize, Serialize)]
struct Book {
    title: String,
    author: String,
    year: Option<i16>,
    character: Vec<Character>,
}

#[derive(Debug, Deserialize, Serialize)]
struct Character {
    name: String,
    location: Option<String>,
}

let muon = File::open("tests/books.muon")?;
let books: BookList = muon_rs::from_reader(muon)?;
println!("{:?}", books);

序列化

在结构体上派生Serialize与反序列化一样简单。使用to_函数序列化MuON数据。

示例

let books = BookList {
    book: vec![
        Book {
            title: "Flight".to_string(),
            author: "Sherman Alexie".to_string(),
            year: Some(2007),
            character: vec![
                Character {
                    name: "Zits".to_string(),
                    location: Some("Seattle".to_string()),
                },
                Character {
                    name: "Justice".to_string(),
                    location: None,
                },
            ],
        },
    ],
};
let muon = muon_rs::to_string(&books)?;
println!("{:?}", muon);

类型

MuON类型可以映射到不同的Rust类型。

MuON类型 Rust类型
text String
bool bool
int i8i16i32i64i128isizeu8u16u32u64u128usize
number f32f64
datetime DateTime
date Date
time Time
record 实现 Deserialize 的结构体
dictionary HashMap
any Value

贡献

欢迎任何反馈、错误报告或增强请求!请创建一个问题并加入乐趣。

依赖项

~110–350KB