#derive #deref

macro derive_deref

Adds #[derive(Deref)] and #[derive(DerefMut)]

5 stable releases

Uses old Rust 2015

1.1.1 Jun 28, 2020
1.1.0 Jun 9, 2019
1.0.2 Jan 27, 2019
1.0.1 Apr 10, 2018
1.0.0 Jan 15, 2018

#195 in Procedural macros

Download history 9015/week @ 2023-11-10 10283/week @ 2023-11-17 10193/week @ 2023-11-24 8368/week @ 2023-12-01 8735/week @ 2023-12-08 9098/week @ 2023-12-15 4533/week @ 2023-12-22 5581/week @ 2023-12-29 8230/week @ 2024-01-05 6364/week @ 2024-01-12 7099/week @ 2024-01-19 7412/week @ 2024-01-26 7647/week @ 2024-02-02 8636/week @ 2024-02-09 9399/week @ 2024-02-16 7633/week @ 2024-02-23

34,793 downloads per month
Used in 59 crates (27 directly)

MIT/Apache

7KB
83 lines

derive_deref

This crate adds a simple #[derive(Deref)] and #[derive(DerefMut)]. It can be used on any struct with exactly one field. If the type of that field is a reference, the reference will be returned directly.

Example

#[derive(Deref)]
struct MyInt(i32);

assert_eq!(&1, &*MyInt(1));
assert_eq!(&2, &*MyInt(2));

#[derive(Deref)]
struct MyString<'a>(&'a str);

// Note that we deref to &str, not &&str
assert_eq!("foo", &*MyString("foo"));
assert_eq!("bar", &*MyString("bar"));

License

Licensed under either of these:

Contributing

Unless you explicitly state otherwise, any contribution you intentionally submit for inclusion in the work, as defined in the Apache-2.0 license, shall be dual-licensed as above, without any additional terms or conditions.

Dependencies

~1.5MB
~33K SLoC