1个不稳定版本

0.1.0 2019年1月23日

#12 in #deref-mut

Download history 190/week @ 2024-03-13 180/week @ 2024-03-20 226/week @ 2024-03-27 153/week @ 2024-04-03 179/week @ 2024-04-10 172/week @ 2024-04-17 180/week @ 2024-04-24 233/week @ 2024-05-01 149/week @ 2024-05-08 152/week @ 2024-05-15 154/week @ 2024-05-22 123/week @ 2024-05-29 160/week @ 2024-06-05 186/week @ 2024-06-12 219/week @ 2024-06-19 146/week @ 2024-06-26

729 每月下载量
6 个crate(4 个直接使用)中使用

MIT/Apache

7KB
98

这是一个过程宏,允许你为你的结构体派生 std::ops::Derefstd::ops::DerefMut。此宏只能在至少有一个字段的 结构体 上派生。你可以指定要解引用的字段,使用 #[deref],并允许可变解引用,使用 #[deref(mutable)]

派生 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());
}

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

依赖

~2MB
~46K SLoC