1#![no_std]
2
3use core::future::Future;
4use core::marker::PhantomData;
5
6use cgp_core::prelude::*;
7
8#[cgp_component {
9 provider: Runner,
10 derive_delegate: UseDelegate<Code>,
11}]
12#[async_trait]
13pub trait CanRun<Code>: HasErrorType {
14 async fn run(&self, _code: PhantomData<Code>) -> Result<(), Self::Error>;
15}
16
17#[cgp_component {
18 provider: SendRunner,
19 derive_delegate: UseDelegate<Code>,
20}]
21#[async_trait]
22pub trait CanSendRun<Code>: HasErrorType {
23 fn send_run(
24 &self,
25 _code: PhantomData<Code>,
26 ) -> impl Future<Output = Result<(), Self::Error>> + Send;
27}