RON
A readable, Rust-like data serialization format built on Serde
Repository Health
Technical Analysis
RON (Rusty Object Notation) is a simple, readable data serialization format whose syntax mirrors Rust itself. It is designed to represent the full Serde data model, so structs, enums, tuples, arrays, maps, ranges, and primitives all round-trip faithfully.
Unlike JSON, RON supports trailing commas, single- and multi-line comments, unquoted field names, optional struct names, and first-class enums, making it a natural fit for configuration files and human-edited data in the Rust ecosystem.
What You Get
- A serializer and deserializer covering the complete Serde data model
- Human-friendly syntax with comments, trailing commas, and unquoted keys
- First-class support for Rust enums, tuples, ranges, and byte strings
- Configurable pretty-printing via PrettyConfig
- no_std support and optional integer128 / indexmap features
Common Use Cases
- Game and application configuration files that humans edit by hand
- Persisting typed Rust data structures to disk in a readable form
- Test fixtures and snapshots that benefit from Rust-like syntax
- Scene and asset descriptions in Rust game engines
Under The Hood
Architecture — RON is organized around a hand-written parser (src/parse.rs) feeding separate serializer (src/ser) and deserializer (src/de) modules that implement Serde’s Serializer and Deserializer traits, with src/extensions.rs and src/options.rs governing opt-in format extensions and src/value providing an untyped Value representation. Tech Stack — Pure Rust (edition 2021, MSRV 1.64) depending on serde, serde_derive, bitflags, once_cell, typeid, and unicode-ident, with optional indexmap and integer128 features and full no_std/alloc support. Code Quality — The crate is mature and heavily tested, with an extensive tests/ suite, a fuzz/ harness wired into OSS-Fuzz, clippy and rustfmt configs, and a detailed CHANGELOG. API Design — The public surface is small and ergonomic: from_str, to_string, and ser::to_string_pretty with a builder-style PrettyConfig cover the common paths, mirroring serde_json’s conventions so existing Serde users are immediately productive.