Derive Macro vert_macros::Dependencies

source ·
#[derive(Dependencies)]
Expand description

A struct like this:

pub struct RendererDependencies {
    scheduler: Handle<Scheduler>,
    graphics: Handle<GraphicsContext>,
}

Will be expanded into this:

impl Dependencies for RendererDependencies {
    fn type_ids() -> Vec<crate::app::ModuleId> {
        let mut ids = ::alloc::vec::Vec::new();
        ids.extend(<Handle<Scheduler> as Dependencies>::type_ids());
        ids.extend(<Handle<GraphicsContext> as Dependencies>::type_ids());
        ids
    }
    fn from_untyped_handles(ptrs: &[crate::app::UntypedHandle]) -> Self {
        let mut offset: usize = 0;
        let ids = <Handle<Scheduler> as Dependencies>::type_ids();
        let range_0 = offset..(offset + ids.len());
        offset += ids.len();
        let ids = <Handle<GraphicsContext> as Dependencies>::type_ids();
        let range_1 = offset..(offset + ids.len());
        offset += ids.len();
        Self {
            scheduler: <Handle<
                Scheduler,
            > as Dependencies>::from_untyped_handles(&ptrs[range_0]),
            graphics: <Handle<
                GraphicsContext,
            > as Dependencies>::from_untyped_handles(&ptrs[range_1]),
        }
    }
}