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
44
45
46
47
48
49
50
51
52
53
/// A helper macro used to define dependencies for a given type as nested tuples of [`DIObj`](super::core::primitives::DIObj).
///
/// First of all, you need to define the dependencies for a given type using the `deps!` macro:
///
/// ```ignore
/// deps!(Bar, Baz, Qux);
/// ```
///
/// Next, it will expand into a nested tuple of [`DIObj`](super::core::primitives::DIObj) for each dependency:
///
/// ```ignore
/// (DIObj<Bar>, (DIObj<Baz>, (DIObj<Qux>, ())))
/// ```
/// A helper macro used to match dependencies for a given type as nested tuples of [`DIObj`](super::core::primitives::DIObj).
///
/// The `deps_match!` macro is used to pattern match the dependencies for a given type as nested tuples of [`DIObj`](super::core::primitives::DIObj).
///
/// For example, for the following specified dependencies:
///
/// ```ignore
/// type Input = deps!(Bar, Baz, Qux);
/// ```
///
/// You can use the `deps_match!` macro to pattern match the dependencies as follows:
///
/// ```ignore
/// let input: Input;
/// let_deps!(bar, baz, qux <- input);
/// ```