4 个版本 (破坏性更改)
0.17.0 | 2024 年 8 月 5 日 |
---|---|
0.16.0 | 2023 年 9 月 26 日 |
0.15.0 | 2023 年 7 月 10 日 |
0.14.0 | 2022 年 8 月 3 日 |
#23 in #avro
17,080 个月下载量
在 6 个crate中使用了(通过 apache-avro)
31KB
590 行
avro_derive
一个 proc-macro 模块,用于自动为结构体或枚举推导 avro schema。该宏生成实现类型 AvroSchema
特性的必要逻辑。
pub trait AvroSchema {
// constructs the schema for the type
fn get_schema() -> Schema;
}
如何使用
在 cargo.toml 中将 "derive" 功能添加到您的 apache-avro 依赖项中
apache-avro = { version = "X.Y.Z", features = ["derive"] }
添加到您的数据模型
#[derive(AvroSchema)]
struct Test {
a: i64,
b: String,
}
示例
use apache_avro::Writer;
#[derive(Debug, Serialize, AvroSchema)]
struct Test {
a: i64,
b: String,
}
// derived schema, always valid or code fails to compile with a descriptive message
let schema = Test::get_schema();
let mut writer = Writer::new(&schema, Vec::new());
let test = Test {
a: 27,
b: "foo".to_owned(),
};
writer.append_ser(test).unwrap();
let encoded = writer.into_inner();
兼容性说明
此模块旨在与 Serde 实现协同工作。如果您的用例需要手动将数据转换为 Value
类型以进行编码,则推导出的模式可能不正确。
依赖项
~1–2MB
~41K SLoC