mod error;
mod factory;
mod raw;
mod resolver;
use std::sync::Arc;
use crate::error::Result;
pub use error::*;
pub use factory::{BoxedFactory, Factory, Value, ValueFactory};
pub use raw::*;
pub use resolver::{BoxedResolver, Resolver};
pub trait Container {
fn add<F, T, Deps>(&mut self, factory: F)
where
F: Factory<T, Deps>,
T: 'static,
Deps: 'static;
fn bind<T>(&mut self, instance: T)
where
T: 'static;
fn get<T>(&self) -> Result<Arc<T>>
where
T: 'static;
fn drop<T>(&mut self)
where
T: 'static;
}