di/
lib.rs

1#![doc = include_str!("README.md")]
2#![cfg_attr(docsrs, feature(doc_cfg))]
3
4// Mut<T> is public primarily for code generation in the proc macro. it is
5// generally uninteresting, but is required because, while we can detect a
6// mutable service, we don't know which alias is behind the 'async' feature.
7// the documentation will remain hidden to avoid confusion unless you really,
8// really know and need to use it.
9
10#[doc(hidden)]
11#[cfg(not(feature = "async"))]
12pub type Mut<T> = std::cell::RefCell<T>;
13
14#[doc(hidden)]
15#[cfg(feature = "async")]
16pub type Mut<T> = std::sync::RwLock<T>;
17
18mod collection;
19mod dependency;
20mod descriptor;
21mod keyed;
22mod provider;
23mod r#type;
24mod validation;
25
26#[cfg(feature = "builder")]
27mod builder;
28
29#[cfg(feature = "builder")]
30mod descriptor_builder;
31
32#[cfg(feature = "inject")]
33mod activator;
34
35#[cfg(feature = "inject")]
36mod inject;
37
38#[cfg(feature = "inject")]
39mod inject_builder;
40
41#[cfg(feature = "lazy")]
42mod lazy_init;
43
44#[cfg(test)]
45mod test;
46
47pub use collection::*;
48pub use dependency::*;
49pub use descriptor::*;
50pub use keyed::*;
51pub use provider::*;
52pub use r#type::*;
53pub use validation::*;
54
55#[cfg(feature = "builder")]
56#[cfg_attr(docsrs, doc(cfg(feature = "builder")))]
57pub use builder::*;
58
59#[cfg(feature = "builder")]
60#[cfg_attr(docsrs, doc(cfg(feature = "builder")))]
61pub use descriptor_builder::*;
62
63#[cfg(feature = "inject")]
64#[cfg_attr(docsrs, doc(cfg(feature = "inject")))]
65pub use activator::*;
66
67#[cfg(feature = "inject")]
68#[cfg_attr(docsrs, doc(cfg(feature = "inject")))]
69pub use inject::*;
70
71#[cfg(feature = "inject")]
72#[cfg_attr(docsrs, doc(cfg(feature = "inject")))]
73pub use inject_builder::*;
74
75#[cfg(feature = "inject")]
76#[cfg_attr(docsrs, doc(cfg(feature = "inject")))]
77pub use di_macros::{inject, injectable};
78
79/// Contains support for lazy service resolution.
80#[cfg(feature = "lazy")]
81pub mod lazy {
82    use super::lazy_init;
83
84    #[cfg_attr(docsrs, doc(cfg(feature = "lazy")))]
85    pub use lazy_init::*;
86}