A library for working with Apache Avro in Rust.
Please check our documentation for examples, tutorials and API reference.
Apache Avro is a data serialization system which provides rich
data structures and a compact, fast, binary data format. If you are not familiar with the data
format, please read [documentation::primer] first.
There are two ways of working with Avro data in this crate:
- Via the generic
Valuetype. - Via types implementing [
AvroSchema] and Serde'sSerializeandDeserialize.
The first option is great for dealing with Avro data in a dynamic way. For example, when working
with unknown or rapidly changing schemas or when you don't want or need to map to Rust types. The
module documentation of [documentation::dynamic] explains how to work in this dynamic way.
The second option is great when dealing with static schemas that should be decoded to and encoded
from Rust types. The module documentation of [serde] explains how to work in this static way.
derive: enable support for deriving [AvroSchema]snappy: enable support for the Snappy codeczstandard: enable support for the Zstandard codecbzip: enable support for the Bzip2 codecxz: enable support for the Xz codec
The current MSRV is 1.88.0.
The MSRV may be bumped in minor releases.
This project is licensed under Apache License 2.0.
Everyone is encouraged to contribute! You can contribute by forking the GitHub repo and making a pull request or opening an issue. All contributions will be licensed under Apache License 2.0.
Please consider adding documentation and tests!
If you introduce a backward-incompatible change, please consider adding instruction to migrate in
the Migration Guide
If you modify the crate documentation in lib.rs, run make readme to sync the README file.