Expand description
Motivation: easily generate a “Viewer” struct that has some fields that reference another struct.
Example input:
#[derive(RefView)]
struct DataStruct {
field0: f64,
field1: u64,
field2: isize,
field3: Vec<Box<usize>>,
}
This would (roughly) generate the following code:
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,
}
}
}
Mutable referenced structs can be generated with RefViewMut
.
§Planned features
- Make some fields skip-able or include them though field attributes
- More control over visability of generated struct
Traits§
- RefView
- Trait to “view” into a struct
- RefView
Mut - Trait to mutably “view” into a struct