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 HandleUseProvider;
9
10#[cgp_provider]
11impl<Context, Provider, Code, Input> Handler<Context, Use<Provider, Code>, Input>
12    for HandleUseProvider
13where
14    Context: HasAsyncErrorType,
15    Provider: Handler<Context, Code, Input>,
16    Input: Send,
17    Provider: Send,
18    Code: Send,
19{
20    type Output = Provider::Output;
21
22    async fn handle(
23        context: &Context,
24        _tag: PhantomData<Use<Provider, Code>>,
25        input: Input,
26    ) -> Result<Provider::Output, Context::Error> {
27        Provider::handle(context, PhantomData, input).await
28    }
29}