pub trait Observe<E: 'static> { type Effect: 'static; type Error; // Required method fn observe( &mut self, effect: &E, ) -> Result<Effects<Self::Effect>, Self::Error>; }