Skip to main content

cgp_handler/components/
try_compute.rs

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