use crateContainer;
/// Types that can construct themselves from a [`Container`].
///
/// Implement this trait (or derive it with `#[derive(Injectable)]`) to allow
/// a type to be assembled by pulling its dependencies out of a [`Container`].
///
/// # Deriving
///
/// The `#[derive(Injectable)]` macro implements both methods for any named
/// struct whose fields all implement `Clone` and are registered in the
/// container. It also emits a [`declare_dependency!`] call for every field
/// type so that [`Container::validate`] can catch missing registrations at
/// startup.