cgp_handler/providers/
pipe.rs1use core::marker::PhantomData;
2
3use cgp_core::prelude::*;
4
5use crate::ComposeHandlers;
6
7pub struct PipeHandlers<Providers>(pub PhantomData<Providers>);
8
9delegate_components! {
10 <Component, Provider, Providers: ComposeProviders<Provider = Provider>>
11 PipeHandlers<Providers> {
12 Component: Provider,
13 }
14}
15
16trait ComposeProviders {
17 type Provider;
18}
19
20impl<ProviderA, ProviderB, RestProviders, OutProviders> ComposeProviders
21 for Cons<ProviderA, Cons<ProviderB, RestProviders>>
22where
23 Cons<ProviderB, RestProviders>: ComposeProviders<Provider = OutProviders>,
24{
25 type Provider = ComposeHandlers<ProviderA, OutProviders>;
26}
27
28impl<Provider> ComposeProviders for Cons<Provider, Nil> {
29 type Provider = Provider;
30}