1 unstable release

0.1.0 Jan 23, 2019

#12 in #deref-mut

Download history 176/week @ 2024-11-15 189/week @ 2024-11-22 240/week @ 2024-11-29 423/week @ 2024-12-06 203/week @ 2024-12-13 100/week @ 2024-12-20 46/week @ 2024-12-27 225/week @ 2025-01-03 503/week @ 2025-01-10 284/week @ 2025-01-17 213/week @ 2025-01-24 344/week @ 2025-01-31 283/week @ 2025-02-07 375/week @ 2025-02-14 264/week @ 2025-02-21 265/week @ 2025-02-28

1,262 downloads per month
Used in 8 crates (5 directly)

MIT/Apache

7KB
98 lines

A procedural macro that allows you to derive std::ops::Deref and std::ops::DerefMut for your structs. This macro can only be derived on structs with atleast one field. You can specify which field you want to be deref'ed to with the #[deref] and allow mutable dereferencing with #[deref(mutable)].

Deriving std::ops::Deref

use std::collections::HashMap;

use derefable::Derefable;

#[derive(Default, Derefable)]
struct Map {
    #[deref]
    inner: HashMap<&'static str, &'static str>
}

fn main() {
    let map = Map::default();

    assert!(map.is_empty());
}

Deriving std::ops::DerefMut

use std::collections::HashMap;

use derefable::Derefable;

#[derive(Default, Derefable)]
struct MutableMap {
    #[deref(mutable)]
    inner: HashMap<&'static str, &'static str>
}

fn main() {
    let mut map = MutableMap::default();

    map.insert("Hello", "World");

    assert_eq!(map.get("Hello"), Some("World"));
}

Dependencies

~2MB
~48K SLoC