pub trait CanProduce<Code> { type Output; // Required method fn produce(&self, _code: PhantomData<Code>) -> Self::Output; }