#macro-derive #traits #deref #defined #field #drerf-mut

进程宏 derive-deref-rs

derive-deref-rs 是一个用于轻松定义核心库中 Derive 和 DrerfMut 特性的 derive 宏库。

2 个版本

0.1.1 2022年4月10日
0.1.0 2022年4月10日

#1269 in 过程宏

Download history 483/week @ 2024-04-05 227/week @ 2024-04-12 319/week @ 2024-04-19 433/week @ 2024-04-26 325/week @ 2024-05-03 314/week @ 2024-05-10 217/week @ 2024-05-17 201/week @ 2024-05-24 206/week @ 2024-05-31 123/week @ 2024-06-07 264/week @ 2024-06-14 178/week @ 2024-06-21 201/week @ 2024-06-28 229/week @ 2024-07-05 145/week @ 2024-07-12 324/week @ 2024-07-19

每月下载量:937
用于 8 个Crate(其中6个直接使用)

MIT 许可证

12KB
283 代码行

派生Deref宏

Crate derive-deref-rs 是一个宏库,用于轻松定义核心库中的 Derive 和 DrerfMut 特性。

如何使用 #[derive(Deref)]

  • 只有单个字段的结构体
#[derive(Deref)]
struct MyStruct {
    a: String
}

这将使用字段 a 实现 Deref 和 DerefMut 特性。

#[derive(Deref)]
struct MyStruct(String);

由于它只有一个字段,因此这也会正常工作。

  • 具有多个字段的结构体
struct MyStruct {
    #[deref]
    a: String,
    b: String
}

当一个结构体有多个字段时,我们需要指定哪个字段将用于解引用结构体。为此,只需在您想要使用的字段上添加 #[deref] 属性即可。您只能使用此属性一次,否则会出现编译错误。

宏的限制。

  • 不支持 Enum 和 Union
  • 仅支持只有一个字段的元组结构体。
  • 在没有任何字段的 struct 上不起作用。
  • 不能使用 #[deref] 属性来解引用具有两个字段的结构体。

依赖项

~1.5MB
~35K SLoC