#derive-macros #traits #deref #defined #field #attributes #drerf-mut

macro derive-deref-rs

derive-deref-rs is a derive macro library used to easily defined the Derive and DrerfMut trait of the core library

2 releases

0.1.1 Apr 10, 2022
0.1.0 Apr 10, 2022

#4 in #derive-macros

Download history 215/week @ 2024-10-27 227/week @ 2024-11-03 113/week @ 2024-11-10 83/week @ 2024-11-17 168/week @ 2024-11-24 151/week @ 2024-12-01 120/week @ 2024-12-08 119/week @ 2024-12-15 59/week @ 2024-12-22 65/week @ 2024-12-29 101/week @ 2025-01-05 90/week @ 2025-01-12 98/week @ 2025-01-19 143/week @ 2025-01-26 212/week @ 2025-02-02 153/week @ 2025-02-09

611 downloads per month
Used in 8 crates (6 directly)

MIT license

12KB
283 lines

Derive Deref Macro

Crate derive-deref-rs is a macro library used to easily defined the Derive and DrerfMut trait of the core library.

How to use #[derive(Deref)]

  • Structure with only one field:
#[derive(Deref)]
struct MyStruct {
    a: String
}

this will implement the Deref and DerefMut trait with the field a.

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

This will also work since it's have only one field.

  • Structure with multiple fields:
struct MyStruct {
    #[deref]
    a: String,
    b: String
}

When a structure has multiple field, we need to tell which field will be used to dereference the structure. To do that, simply add #[deref] on the field you want to use. You can only use this attribute once, otherwise a compile error will occur.

Limitation of the macro.

  • Does not support Enum and Union
  • Only support tuple struct with only one field.
  • Does not work on struct without any field.
  • Can't dereference a structure with 2 fields with #[deref] attribute.

Dependencies

~1.5MB
~38K SLoC