1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! 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>>();
//! // ...
//! ```
pub use *;
pub use *;