derefable 0.1.0

Automatically derive Deref/DerefMut implementations
Documentation
  • Coverage
  • 50%
    1 out of 2 items documented0 out of 1 items with examples
  • Size
  • Source code size: 9.08 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 287.78 kB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 3s Average build duration of successful builds.
  • all releases: 3s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • XAMPPRocky

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"));
}