Crate derive-deref-rs
is a macro library used to easily defined the Derive and DrerfMut trait of the core library.
- 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.
- 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.