hypershell_components/providers/
use.rs1use core::marker::PhantomData;
2
3use cgp::extra::handler::{Handler, HandlerComponent};
4use cgp::prelude::*;
5
6use crate::dsl::Use;
7
8pub struct UseProvider;
9
10#[cgp_provider]
11impl<Context, Provider, Code, Input> Handler<Context, Use<Provider, Code>, Input> for UseProvider
12where
13 Context: HasAsyncErrorType,
14 Provider: Handler<Context, Code, Input>,
15 Input: Send,
16 Provider: Send,
17 Code: Send,
18{
19 type Output = Provider::Output;
20
21 async fn handle(
22 context: &Context,
23 _tag: PhantomData<Use<Provider, Code>>,
24 input: Input,
25 ) -> Result<Provider::Output, Context::Error> {
26 Provider::handle(context, PhantomData, input).await
27 }
28}