cgp_handler/components/
try_compute.rs1use core::marker::PhantomData;
2
3use cgp::component::UseDelegate;
4use cgp::prelude::*;
5
6use crate::UseInputDelegate;
7
8#[cgp_component(TryComputer)]
9#[prefix(@cgp.extra.handler in DefaultNamespace)]
10#[derive_delegate(UseDelegate<Code>)]
11#[derive_delegate(UseInputDelegate<Input>)]
12#[use_type(HasErrorType.Error)]
13pub trait CanTryCompute<Code, Input> {
14 type Output;
15
16 fn try_compute(&self, _code: PhantomData<Code>, input: Input) -> Result<Self::Output, Error>;
17}
18
19#[cgp_component(TryComputerRef)]
20#[prefix(@cgp.extra.handler in DefaultNamespace)]
21#[derive_delegate(UseDelegate<Code>)]
22#[derive_delegate(UseInputDelegate<Input>)]
23#[use_type(HasErrorType.Error)]
24pub trait CanTryComputeRef<Code, Input> {
25 type Output;
26
27 fn try_compute_ref(
28 &self,
29 _code: PhantomData<Code>,
30 input: &Input,
31 ) -> Result<Self::Output, Error>;
32}