Skip to main content

cgp_handler/components/
try_compute.rs

1use core::marker::PhantomData;
2
3use cgp_core::component::UseDelegate;
4use cgp_core::prelude::*;
5
6use crate::UseInputDelegate;
7
8#[cgp_component {
9    provider: TryComputer,
10    derive_delegate: [
11        UseDelegate<Code>,
12        UseInputDelegate<Input>,
13    ],
14}]
15pub trait CanTryCompute<Code, Input>: HasErrorType {
16    type Output;
17
18    fn try_compute(
19        &self,
20        _code: PhantomData<Code>,
21        input: Input,
22    ) -> Result<Self::Output, Self::Error>;
23}
24
25#[cgp_component {
26    provider: TryComputerRef,
27    derive_delegate: [
28        UseDelegate<Code>,
29        UseInputDelegate<Input>,
30    ],
31}]
32pub trait CanTryComputeRef<Code, Input>: HasErrorType {
33    type Output;
34
35    fn try_compute_ref(
36        &self,
37        _code: PhantomData<Code>,
38        input: &Input,
39    ) -> Result<Self::Output, Self::Error>;
40}