RMP is a complete pure-Rust MessagePack implementation. MessagePack a compact self-describing binary serialization format.
This project consists of three crates:
- RMP-Serde (Documentation) — easy serializing/deserializing via Serde.
- RMP-Value (Documentation) — a universal
Value
enum that can hold any MessagePack type. Allows deserializing arbitrary messages without a known schema. - RMP (Documentation) — low-level functions for reading/writing encoded data.
-
Convenient and powerful APIs
RMP is designed to be lightweight and straightforward. There is a high-level API with support for Serde, which provides you convenient interface for encode/decode Rust's data structures using
derive
attribute. There are also low-level APIs, which give you full control over data encoding/decoding process, with no-std support and without heap allocations. -
Zero-copy value decoding
RMP allows to decode bytes from a buffer in a zero-copy manner. Parsing is implemented in safe Rust.
-
Robust, stable and tested
This project is developed using TDD and CI, so any found bugs will be fixed without breaking existing functionality.
Smaller and simpler to parse than JSON. Supports the same types as JSON, plus binary data, all float values, and 64-bit numbers. Encoded data is self-describing and extensible, without requiring a schema definition.
- Rust 1.56.0 or later