teloc/
get_dependencies.rs

1//! This is a section for advanced usage. For common usage you can not read this page.
2
3/// The trait, used for getting list of dependencies from provider of services. Do not use it by
4/// yourself.
5pub trait GetDependencies<'a, Deps, Indexes> {
6    fn get_deps(&'a self) -> Deps;
7}
8
9mod impls {
10    use crate::get_dependencies::GetDependencies;
11    use crate::resolver::Resolver;
12    use frunk::hlist::HList;
13    use frunk::{HCons, HNil};
14
15    impl<'a, T, TRest, Cont, Infer, InferRest, SP>
16        GetDependencies<'a, HCons<T, TRest>, HCons<(Cont, Infer), InferRest>> for SP
17    where
18        TRest: HList,
19        SP: Resolver<'a, Cont, T, Infer> + GetDependencies<'a, TRest, InferRest>,
20    {
21        fn get_deps(&'a self) -> HCons<T, TRest> {
22            GetDependencies::<TRest, InferRest>::get_deps(self).prepend(self.resolve())
23        }
24    }
25    impl<'a, S> GetDependencies<'a, HNil, HNil> for S {
26        fn get_deps(&'a self) -> HNil {
27            HNil
28        }
29    }
30}