#traits #derive-macros #field #deref #defined

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

#1535 in Procedural macros

Download history 330/week @ 2024-07-21 200/week @ 2024-07-28 129/week @ 2024-08-04 88/week @ 2024-08-11 185/week @ 2024-08-18 114/week @ 2024-08-25 149/week @ 2024-09-01 236/week @ 2024-09-08 100/week @ 2024-09-15 121/week @ 2024-09-22 129/week @ 2024-09-29 78/week @ 2024-10-06 153/week @ 2024-10-13 107/week @ 2024-10-20 215/week @ 2024-10-27 226/week @ 2024-11-03

709 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
~36K SLoC