sval
: Streaming, structured values
sval
is a lightweight serialization-only framework that treats values like a flat stream of tokens.
It's well suited to self-describing text formats like JSON.
How is this different from serde
?
serde
is the de-facto serialization framework for Rust and is well suited to the majority of
use cases. sval
is like a light blend of serde::ser
and serde::de
that is smaller in scope.
It makes a few key different design decisions than serde
that make it effective for working with
self-describing formats:
- The API is flat rather than using recursion to stream nested datastructures.
- All values with dynamic sizes, including text strings, can be streamed in multiple calls.
- Borrowing is an optional optimization.
- The core data model is small, with tags for extensibility.
Current status
This project has a complete and stable API, but isn't well documented yet.