use crate::{ProgramCollect, program::Program}; pub trait ProgramSetup where C: ProgramCollect, { fn setup(self, program: &mut Program); } impl Program where C: ProgramCollect, { /// Load and execute init logic pub fn with_setup + 'static>(&mut self, setup: S) { S::setup(setup, self); } }