For a serialization framework for Rust data structures, the strongest matches are serde-rs/serde (Serde is the foundational Rust serialization framework offering derive), geal/nom (Nom is a parser combinator library for building custom) and apache/thrift (Apache Thrift is a cross-language RPC framework with its). google/flatbuffers and apache/fory round out the shortlist. Each is ranked by relevance to your query, popularity and recent activity.
High-performance libraries and crates for serializing and deserializing complex data structures in the Rust ecosystem.
This project is a framework for the efficient serialization and deserialization of data structures. It provides a unified, macro-based interface that automates the conversion of complex internal objects into standardized formats and reconstructs them from raw input streams or buffers. By leveraging compile-time code generation, the library minimizes manual implementation overhead while ensuring consistent logic across diverse data types. The framework distinguishes itself through a format-agnostic data model and a visitor-based parsing architecture that decouples data structures from specific
Serde is the foundational Rust serialization framework offering derive macros for automatic encoding and decoding, broad format support via pluggable backends, and compile-time optimizations for zero-copy deserialization — exactly the match for a derive-driven, performant serialization library.
nom is a Rust parser combinator framework used to build complex parsers for binary and text data. It functions as an abstract syntax tree generator and a bit-level binary parser, allowing users to construct structured data by combining small, reusable parsing functions. The framework provides specialized support for zero-copy binary parsing, extracting data as slices from raw byte arrays to avoid memory allocations. It also includes a streaming data parser capable of processing partial input chunks from networks or files and signaling when additional input is required. The project covers a b
Nom is a parser combinator library for building custom parsers, not a serialization framework that automatically converts data structures via derive macros; while it offers zero-copy and streaming parsing, it lacks the derive-based multi-format conversion this search requires.
Thrift is a cross-language remote procedure call framework and data serialization protocol. It provides an interface definition language to specify data types and service interfaces in a neutral format, enabling the automated generation of client and server code across multiple programming languages. The project functions as a polyglot service communicator using a layered software stack to ensure interoperable communication. It focuses on implementing cross-language remote procedure calls and transforming complex data structures into standardized formats for efficient network transport. The
Apache Thrift is a cross-language RPC framework with its own serialization protocol and IDL compiler, not a Rust-native library with derive macros that converts custom structs to/from multiple common formats like JSON or MessagePack.
FlatBuffers is a cross-platform serialization library designed for performance-critical applications that require efficient, zero-copy data access. By organizing data in a structured binary format, it allows applications to read and write complex data structures directly from memory-mapped buffers without the need for intermediate parsing or temporary object allocation. The project distinguishes itself through a schema-driven approach that balances high-performance access with long-term data evolution. It utilizes a unique memory layout featuring relative offsets and inline fixed-size structu
FlatBuffers is a high-performance schema-driven serialization library with Rust support, but it uses code generation from a schema language rather than Rust derive macros, so it doesn't match the typical Rust serialization framework workflow you're looking for.
Fory is a cross-language serialization framework and binary data serializer designed to convert complex object graphs into a compact binary format for high-performance data exchange. It includes an IDL-based schema compiler to transform interface definition language files into type-safe native data models and a schema evolution manager to maintain forward and backward compatibility. The project features a zero-copy data access layer that allows reading specific fields from binary rows without deserializing the entire object. It supports dual-mode serialization, enabling a toggle between a por
Fory is a cross-language serialization framework that can generate Rust code via an IDL schema compiler and supports zero-copy and schema evolution, but it is not a Rust-native library with derive macros for custom structs — it requires defining schemas in a separate IDL and leans on a binary format rather than multiple common interchange formats.
MessagePack is a binary object serialization library and a cross-platform data exchange format. It serves as a binary alternative to JSON, converting structured data into a space-efficient binary representation for network transmission and storage. The system provides a standardized format for swapping complex data types across different programming languages and architectures. It allows for the definition of custom data type encoding by pairing application-specific information with specialized serialization markers. The library handles the encoding and decoding of diverse data types, includ
This repository is the MessagePack data format specification and its cross-language reference implementations, not a Rust library that provides derive macros and multi-format serialization for custom types.
flutterrustbridge is a code generation tool that automatically creates type‑safe Dart bindings for Rust functions, enabling direct cross‑language calls between Flutter and a Rust backend. It provides an async FFI adapter that transforms synchronous Rust functions into Dart async methods with background thread management, a cross‑language object manager that wraps persistent Rust structs as Dart objects preserving state across calls, and trait object interop that converts Rust traits into Dart abstract classes for seamless bidirectional use. The project handles the full lifecycle of integrat
flutterrustbridge is a code generation tool for creating Dart bindings from Rust, not a general-purpose Rust serialization library with derive macros for common formats like JSON or MessagePack.
Protocol Buffers is a language-neutral, platform-agnostic mechanism for serializing structured data. It provides a schema-driven toolchain that compiles declarative data definitions into type-safe source code, enabling consistent communication and strongly typed API contracts across services written in different programming languages. The project distinguishes itself through a highly efficient binary wire format that utilizes tag-based encoding and variable-width integer compression to minimize payload size and processing overhead. It supports robust evolutionary schema management, allowing d
This is the official Protocol Buffers implementation, a language-neutral serialization system with schema evolution, but it is not a Rust library with derive macros and does not support multiple formats beyond its own binary wire format, so it is not what this search is after.