4个版本
新 0.1.3 | 2024年8月10日 |
---|---|
0.1.2 | 2024年8月10日 |
0.1.1 | 2024年8月7日 |
0.1.0 | 2024年8月7日 |
#272 in 过程宏
每月248次下载
10KB
107 代码行
small_derive_deref
此crate添加了 #[derive(Deref)]
#[derive(DerefMut]
。
它适用于
- 只有一个字段的Struct
- 具有多个字段的Struct
- 需要
#[DerefTarget]
/#[DerefMutTarget]
。
- 需要
- 只有一个字段的元组
- 具有多个字段的元组
- 将使用第一个字段
已知限制
- 泛型未正确实现,适用于示例和其他一些基本用例
#[DerefTarget]
和#[DerefMutTarget]
的字段类型必须相同
示例
use std::ops::DerefMut;
use small_derive_deref::{Deref, DerefMut};
#[derive(Deref, DerefMut)]
struct WrapperStructDifferentTargetsGenerics<'a> {
#[DerefTarget]
field: &'a str,
#[DerefMutTarget]
field_mut: &'a str,
}
let mut w = WrapperStructDifferentTargetsGenerics { field: "not rust", field_mut: "rust"};
*w = "rUst";
assert_eq!(*w, "not rust");
assert_eq!(*w.deref_mut(), "rUst");
#[derive(Deref, DerefMut)]
struct WrapperTuple(i32, i32);
let mut w = WrapperTuple(1, 3);
*w *= 2;
assert_eq!(*w, 2);
assert_eq!(*w.deref_mut(), 2);
许可证
MIT或Apache-2.0
依赖项
~265–710KB
~17K SLoC