Module dep_obj::example [−][src]
Expand description
The dep_type
and dep_obj
macro expansion example.
ⓘ
dep_type! { #[derive(Debug)] pub struct MyDepType in MyDepTypeId { prop_1: bool = false, prop_2: i32 = 10, } } macro_attr! { #[derive(Component!, Debug)] struct MyDepTypePrivateData { dep_data: MyDepType, } } macro_attr! { #[derive(ComponentId!, Debug, Copy, Clone, Eq, PartialEq, Hash, Ord, PartialOrd)] pub struct MyDepTypeId(Id<MyDepTypePrivateData>); } macro_attr! { #[derive(State!, Debug)] pub struct MyApp { my_dep_types: Arena<MyDepTypePrivateData>, } } impl MyDepTypeId { pub fn new(app: &mut MyApp) -> MyDepTypeId { app.my_dep_types.insert(|id| (MyDepTypePrivateData { dep_data: MyDepType::new_priv() }, MyDepTypeId(id))) } dep_obj! { pub fn obj(self as this, app: MyApp) -> MyDepType { if mut { &mut app.my_dep_types[this.0].dep_data } else { &app.my_dep_types[this.0].dep_data } } } }