muon-rs 0.2.0

Serde support for MuON data interchange format
Documentation

muon-rs

A Rust library for the MuON data format, using serde.

See documentation for more information.

Deserializing

The easiest way to deserialize data is to derive serde::Deserialize on a struct. Then use one of the from_ functions.

Example

MuON file:

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:

#[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);

Serializing

Deriving serde::Serialize on a struct is just as easy. The to_ functions are used to serialize MuON data.

Example

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);

Types

MuON types can be mapped to different Rust types.

Contributing

Any feedback, bug reports or enhancement requests are welcome! Please create an issue and join the fun.