derive-deref-rs

Crates.ioderive-deref-rs
lib.rsderive-deref-rs
version0.1.1
sourcesrc
created_at2022-04-10 23:37:16.078066
updated_at2022-04-10 23:42:20.279716
descriptionderive-deref-rs is a derive macro library used to easily defined the Derive and DrerfMut trait of the core library.
homepage
repositoryhttps://github.com/MathieuGravel/derive-deref-rs
max_upload_size
id565290
size14,438
Mathieu Gravel (MathieuGravel)

documentation

README

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.
Commit count: 5

cargo fmt