#macro-derive #traits #deref #defined #field #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

#772 in Procedural macros

Download history 154/week @ 2024-01-17 264/week @ 2024-01-24 374/week @ 2024-01-31 543/week @ 2024-02-07 435/week @ 2024-02-14 476/week @ 2024-02-21 387/week @ 2024-02-28 341/week @ 2024-03-06 452/week @ 2024-03-13 351/week @ 2024-03-20 1231/week @ 2024-03-27 587/week @ 2024-04-03 279/week @ 2024-04-10 212/week @ 2024-04-17 526/week @ 2024-04-24 236/week @ 2024-05-01

1,284 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
~34K SLoC