A Rust library for the MuON data format, using serde.
See documentation for more information.
The easiest way to deserialize data is to derive [serde::Deserialize
] on
a struct. Then use one of the [from_
] functions.
MuON file:
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 code: ```rust
struct BookList {
book: Vec
struct Book {
title: String,
author: String,
year: Option
struct Character {
name: String,
location: Option
let muon = File::open("tests/books.muon")?; let books: BookList = muonrs::fromreader(muon)?; println!("{:?}", books); ```
Deriving [serde::Serialize
] on a struct is just as easy. The [to_
]
functions are used to serialize MuON data.
rust
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 types can be mapped to different Rust types.
MuON Type | Rust Types |
---|---|
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 | struct implementing Deserialize |
dictionary | HashMap |
any | Value |
Any feedback, bug reports or enhancement requests are welcome! Please create an issue and join the fun.