pub trait EffectFor<Dep> { type Cleanup: EffectCleanup; fn effect_for(self, arg: &Dep) -> Self::Cleanup; }