#struct-fields #view #reference #derive #viewer #ref-view

refview_derive

获取结构体中某些字段的引用视图

1 个不稳定版本

0.1.0 2022年3月6日

#112 in #viewer


用于 refview

MIT/Apache

12KB
167

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许可证的许可。

除非您明确表示,否则,您提交给此crate的任何有意包含的贡献,如Apache-2.0许可证中定义的,应如上所述双重许可,而无需任何额外的条款或条件。

依赖关系

~1.5MB
~35K SLoC