Crate typed_container

Source
Expand description

A simple container for IoC Example:

let config = /* ... */;
let container = Container::new();
container.register_constructor(|_| Arc::new(Client::new()));

let config_cloned = config.clone();
container.register_constructor(move |x| {
    Arc::new(Downloader::new(
        x.get(),
        config_cloned.download_threads.unwrap_or(1), // default single thread
    ))
});

let config_cloned = config.clone();
container.register_constructor(move |x| {
    CachePool::new(
        config_cloned.size_limit.unwrap_or(512 * 1024 * 1024), // 512MB
        config_cloned.cache_expire.unwrap_or(30),              // 30s
        x.get(),
    )
});

let config_cloned = config.clone();
container.register_constructor(move |x| {
    StreamTrackingPool::new(
        config_cloned.track_expire.unwrap_or(60),  // 60s
        config_cloned.track_interval.unwrap_or(8), // 8s
        x.get(),
        x.get(),
    )
});

let _cache_pool = container::get::<Arc<CachePool>>();
// ...

Structs§

Container
Error

Enums§

ErrorKind