1个不稳定版本

0.1.0 2019年1月23日

#12 in #deref-mut

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

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