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 过程宏

Download history 116/week @ 2024-08-02 132/week @ 2024-08-09

每月248次下载

MIT/Apache

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