#macro-derive #improved #abomonation

abomonation_derive_ng

为 abomonation 定制的 derive 插件

1 个不稳定版本

0.1.0 2023年11月8日

#27#improved

Download history 201/week @ 2024-04-17 192/week @ 2024-04-24 132/week @ 2024-05-01 126/week @ 2024-05-08 120/week @ 2024-05-15 159/week @ 2024-05-22 269/week @ 2024-05-29 247/week @ 2024-06-05 85/week @ 2024-06-12 114/week @ 2024-06-19 156/week @ 2024-06-26 109/week @ 2024-07-03 156/week @ 2024-07-10 56/week @ 2024-07-17 86/week @ 2024-07-24 79/week @ 2024-07-31

392 每月下载量
用于 3 crates

MIT 协议

17KB
423

abomonation_derive_ng

Abomonation crate 的 derive 宏实现。从 mystor 的原始 abomonation_derive crate 分支并改进而来。

此 crate 为应使用 abomonation crate 可序列化的类型提供定制的 derive 宏 #[derive(Abomonation)]

用法

将以下内容添加到您的 Cargo.toml

[dependencies]
abomonation_derive_ng = "0.1"
abomonation = "0.5"

然后,在您的类型上 derive Abomonation

#[macro_use]
extern crate abomonation_derive_ng;
extern crate abomonation;
use abomonation::Abomonation;

#[derive(Abomonation, PartialEq, Debug)]
struct MyStruct {
    a: u64,
    b: String,
    c: Vec<u8>,
}

// Now you can use `MyStruct` with `abomonation`'s `encode` and `decode`.

属性

  • #[abomonation_omit_bounds] : 跳过为 Abomonation trait 生成自动 trait bound。
  • #[abomonation_bounds(Trait1, Trait2)] : 添加自定义 trait bound。
  • #[abomonate_with = "path::to::function"] : 指定用于序列化的自定义方法。
  • #[abomonation_skip] : 序列化时跳过字段。

限制

该库目前不支持联合类型。由于abomonation序列化技术的特性,必须使用unsafe

安全性

此库依赖于与abomonation相同的非安全序列化策略,因此同样存在相同的注意事项。它不适用于未知的输入,并需要在使用时谨慎操作。有关安全性问题和如何使用此库的详细信息,请参阅abomonation文档。

许可证

本项目采用MIT许可证,与原始的abomonation-derive库相同。

依赖关系

~255–700KB
~17K SLoC