pub trait Task {
type RequiredResources: for<'a> DataRequirement<'a> + RequiresResources<ResourceId> + Send + 'static;
// Required method
fn run(
&mut self,
data: <Self::RequiredResources as DataRequirement<'_>>::Borrow,
);
}