#deref #deref-mut #field #deriving #traits #derived #reference

macro derived-deref

Crate for deriving the Deref and DerefMut traits

5 releases (stable)

2.1.0 Aug 15, 2023
2.0.1 Aug 15, 2023
1.0.0 Jul 7, 2023
0.1.0 Jul 7, 2023

#1675 in Procedural macros

45 downloads per month
Used in in-keys

MIT/Apache

10KB
112 lines

derived-deref

A crate for deriving the Deref and DerefMut traits from the standard library onto structs with at least one field. Fields with references are passed directly.

Examples

use derived_deref::{Deref, DerefMut};

#[derive(Deref, DerefMut)]
struct StringWithCount {
    // Annotation of `#[target]` is required when there are two+ fields.
    #[target] inner: String,
    count: usize,
}


// When there is only one field, annotation is optional instead.

#[derive(Deref, DerefMut)]
struct StringWrapper(String);

#[derive(Deref, DerefMut)]
struct CountWrapper(#[target] usize);

lib.rs:

A crate for deriving the Deref and DerefMut traits from the standard library onto structs with at least one field. Fields with references are passed directly.

Examples

use derived_deref::{Deref, DerefMut};

#[derive(Deref, DerefMut)]
struct StringWithCount {
    // Annotation of `#[target]` is required when there are two+ fields.
    #[target] inner: String,
    count: usize,
}


// When there is only one field, annotation is optional instead.

#[derive(Deref, DerefMut)]
struct StringWrapper(String);

#[derive(Deref, DerefMut)]
struct CountWrapper(#[target] usize);

Dependencies

~310–760KB
~18K SLoC