pub trait Plugin {
type Spec;
type Factory;
// Required methods
fn new() -> Self
where Self: Sized;
fn spec(&self) -> &Self::Spec;
fn factory(&self) -> &Self::Factory;
fn into_parts(self: Box<Self>) -> (Self::Spec, Self::Factory);
}