ioc
pub trait FactoryObject: Any + Sized { type Factory: Factory<Self>; }
type Factory: Factory<Self>