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 are registered in the container by matching providers.
/// It also emits a `declare_dependency!` call for every field type so that
/// [`Container::validate`] can catch missing registrations at startup.