hypershell_components/providers/
use.rs

1use 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}