1 unstable release

Uses new Rust 2024

new 0.1.0 May 10, 2025

#829 in Encoding

50 downloads per month

0BSD license

77KB
2K SLoC

serde_sono

A serde de-/serializer for the Sono data format.

Example

    use serde::Deserialize;

    #[derive(Deserialize, Debug)]
    #[allow(dead_code)]
    struct Hobby(String);

    #[derive(Deserialize, Debug)]
    #[allow(dead_code)]
    struct Person {
        name: String,
        age: u32,
        hobby: Hobby,
        #[serde(default)]
        friends: Vec<Person>,
    }

    fn main() {
        let s = r#"
Person {
    name: "pete",
    age: 10,
    hobby: "reading",
    friends: [
        { name: "tom", age: 33, hobby: "writing" },
        Person("mike", 9, Hobby("transpiling"), []),
        Person("josh", 12, "dreaming"),
    ]
}
"#;
        match serde_sono::from_str::<Person>(s) {
            Err(e) => println!("syntax error: {e:#}"),
            Ok(value) => println!("{value:#?}"),
        }
    }

SONO language

See https://github.com/xitep/sono

TODOs

  • Pretty formatting when serializing
  • Measure and tweak performance
  • Efficient value skipping / ignoring
  • Documentation

Dependencies

~95–320KB