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 编码
73 个月下载量
在 3 crates 中使用
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 | i8 i16 i32 i64 i128 isize u8 u16 u32 u64 u128 usize |
number | f32 f64 |
datetime | DateTime |
date | Date |
time | Time |
record | 实现 Deserialize 的结构体 |
dictionary | HashMap |
any | Value |
贡献
欢迎任何反馈、错误报告或增强请求!请创建一个问题并加入乐趣。
依赖项
~110–350KB