pub trait Spin: Errors { fn spin(&mut self, duration: Option<Duration>) -> Result<(), Self::Error>; }