#struct-fields #reference #view #generate #viewer #another #derive

refview

通过结构体获取一些字段的引用视图

1个不稳定版本

0.1.0 2022年3月6日

#2971Rust模式

MIT/Apache

8KB
106

ref-view

一个派生宏,用于生成结构体某些字段的“视图”。

用法

动机:轻松生成一个具有引用另一个结构体的字段的“查看器”结构体。

示例输入

#[derive(RefView)]
struct DataStruct {
    field0: f64,
    field1: u64,
    field2: isize,
    field3: Vec<Box<usize>>,
}

这将(大致)生成以下代码

pub struct DataStructViewer<'a> {
    pub field0: &'a f64,
    pub field1: &'a u64,
    pub field2: &'a isize,
    pub field3: &'a Vec<Box<usize>>,
}

impl<'a> RefView<'a> for DataStruct {
    type Viewer = DataStructViewer<'a>;
    fn view(&'a self) -> Self::Viewer
    where
        Self::Viewer: 'a,
    {
        Self::Viewer {
            field0: &self.field0,
            field1: &self.field1,
            field2: &self.field2,
            field3: &self.field3,
        }
    }
}

可以使用RefViewMut生成可变引用结构体。

计划特性

  • 使一些字段可跳过或通过字段属性包含它们
  • 对生成的结构体可见性的更多控制

许可证

根据您的选择,受Apache License 2.0或MIT许可证的许可。

除非您明确声明,否则您提交的任何有意包含在此软件包中的贡献,根据Apache-2.0许可证定义,应如上双重许可,不附加任何其他条款或条件。

依赖项

~1.5MB
~35K SLoC