cgp_handler/components/
try_compute.rs1use 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}