A complete pure-Rust implementation of the MessagePack binary serialization format.
RMP (Rust MessagePack) is a pure-Rust implementation of the MessagePack binary serialization format. It provides a compact, self-describing alternative to JSON for efficiently encoding and decoding data in Rust applications, supporting the same data types as JSON plus additional features like binary data and 64-bit numbers.
Rust developers who need efficient binary serialization for data interchange, storage, or network communication, particularly those working in performance-sensitive or embedded environments.
Developers choose RMP for its complete Rust-native implementation, offering both high-level Serde convenience and low-level control, with features like zero-copy decoding and no-std support, all while being robust and thoroughly tested.
MessagePack implementation for Rust / msgpack.org[Rust]
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides high-level API with Serde support, allowing easy serialization/deserialization using derive attributes for Rust structs, as highlighted in the README.
Enables decoding bytes directly from buffers without copying, implemented in safe Rust for memory efficiency and performance, a key feature mentioned in the documentation.
Developed with Test-Driven Development and Continuous Integration, ensuring reliability and maintaining backward compatibility, as stated in the project's philosophy.
Low-level APIs support no-std environments and avoid heap allocations, making it suitable for embedded systems, a noted advantage in the features section.
Includes a Value enum in the rmpv crate that can hold any MessagePack type, allowing deserialization of arbitrary messages without a known schema.
Compared to formats like CBOR, MessagePack lacks native support for advanced types such as dates, bignums, and decimal floats, as admitted in the README's comparison section.
As a binary format, it is not easily readable or editable by humans, complicating debugging and manual data inspection compared to text-based formats like JSON.
High-level convenience relies heavily on the Serde ecosystem, which may not suit projects avoiding Serde or requiring custom serialization logic without external dependencies.