Skip to main content

cgp_handler/providers/
promote_all.rs

1use cgp_core::prelude::*;
2
3use crate::{
4    AsyncComputerComponent, AsyncComputerRefComponent, ComputerComponent, ComputerRefComponent,
5    HandlerComponent, HandlerRefComponent, Promote, PromoteAsync, PromoteRef, TryComputerComponent,
6    TryComputerRefComponent, TryPromote,
7};
8
9delegate_components! {
10    <Provider>
11    new PromoteComputer<Provider> {
12        ComputerRefComponent: PromoteRef<Provider>,
13        TryComputerComponent: Promote<Provider>,
14        TryComputerRefComponent: PromoteRef<Provider>,
15        AsyncComputerComponent: PromoteAsync<Provider>,
16        AsyncComputerRefComponent: PromoteRef<Provider>,
17        HandlerComponent: PromoteAsync<Provider>,
18        HandlerRefComponent: PromoteRef<Provider>,
19    }
20}
21
22delegate_components! {
23    <Provider>
24    new PromoteTryComputer<Provider> {
25        TryComputerComponent: TryPromote<Provider>,
26        [
27            ComputerRefComponent,
28            TryComputerRefComponent,
29            AsyncComputerComponent,
30            AsyncComputerRefComponent,
31            HandlerComponent,
32            HandlerRefComponent,
33        ] ->
34            PromoteComputer<Provider>,
35    }
36}
37
38delegate_components! {
39    <Provider>
40    new PromoteProducer<Provider> {
41        ComputerComponent: Promote<Provider>,
42        [
43            ComputerRefComponent,
44            TryComputerComponent,
45            TryComputerRefComponent,
46            AsyncComputerComponent,
47            AsyncComputerRefComponent,
48            HandlerComponent,
49            HandlerRefComponent,
50        ] ->
51            PromoteComputer<Provider>,
52    }
53}
54
55delegate_components! {
56    <Provider>
57    new PromoteAsyncComputer<Provider> {
58        AsyncComputerRefComponent: PromoteRef<Provider>,
59        HandlerComponent: Promote<Provider>,
60        HandlerRefComponent: PromoteRef<Provider>,
61    }
62}
63
64delegate_components! {
65    <Provider>
66    new PromoteHandler<Provider> {
67        HandlerComponent: TryPromote<Provider>,
68        [
69            AsyncComputerRefComponent,
70            HandlerRefComponent,
71        ] ->
72            PromoteAsyncComputer<Provider>,
73    }
74}