A no_std, serde-compatible serializer and deserializer for Rust, designed for embedded and constrained environments.
Postcard is a serializer and deserializer library for Rust that is fully compatible with the Serde framework and designed to work in `no_std` environments. It provides a stable, efficient wire format for serializing data structures, making it ideal for communication in embedded systems or other resource-constrained contexts. The library focuses on being a drop-in replacement for Serde while optimizing for memory usage, code size, and developer time.
Rust developers working on embedded systems, microcontrollers, or any constrained environment where the standard library is unavailable. It is also suitable for those needing a reliable, customizable serialization format for inter-process or network communication.
Developers choose Postcard for its seamless integration with Serde, stable wire format, and efficiency in `no_std` contexts. Its unique Flavors system allows deep customization of serialization behavior, making it versatile for bespoke protocols while maintaining low resource overhead.
A no_std + serde compatible message library for Rust
Explicitly designed for embedded and constrained environments without Rust's standard library, as stated in the design goals, making it ideal for microcontrollers.
Acts as a drop-in replacement for Serde, supporting a maximal set of its features, so developers can migrate seamlessly in no_std contexts.
Has a documented and stable wire format since v1.0.0, ensuring reliable communication for long-term deployments, as highlighted in the README.
Prioritizes low memory usage, small code size, and minimal CPU overhead, following the design goals for constrained systems.
Flavors system allows combinable plugins to modify serialization and deserialization behavior, providing flexibility for bespoke protocols.
Attributes like flatten or skip_serializing_if can break serialization, requiring extensive testing, as warned in the README's tracking issue.
Requires manual configuration in Cargo.toml, such as disabling serde's default features for no_std compatibility, adding initial overhead.
Limited to Rust; lacks built-in support for other languages, which can hinder integration in heterogeneous systems or cross-platform projects.
Varint encoding for integers larger than eight bits optimizes for size but can introduce CPU overhead compared to fixed-width encoding.
Strongly typed JSON library for Rust
PROST! a Protocol Buffers implementation for the Rust Language
Zero-copy deserialization framework for Rust
Rusty Object Notation
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.