Skip to main content

Computer

Trait Computer 

Source
pub trait Computer<__Context__, Code, Input>: IsProviderFor<ComputerComponent, __Context__, (Code, Input)> {
    type Output;

    // Required method
    fn compute(
        __context__: &__Context__,
        _code: PhantomData<Code>,
        input: Input,
    ) -> Self::Output;
}

Required Associated Types§

Required Methods§

Source

fn compute( __context__: &__Context__, _code: PhantomData<Code>, input: Input, ) -> Self::Output

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a, Context, Code, Input, Args, Output, Remainder, Handlers> Computer<Context, Code, (&'a Input, Args)> for MatchFirstWithHandlersRef<Handlers>
where Input: HasExtractorRef, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, (<Input as HasExtractorRef>::ExtractorRef<'a>, Args), Output = Result<Output, (Remainder, Args)>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, _: (&'a Input, Args), ) -> Output

Source§

impl<'a, Context, Code, Input, Args, Output, Remainder, Handlers> Computer<Context, Code, (&'a mut Input, Args)> for MatchFirstWithHandlersMut<Handlers>
where Input: HasExtractorMut, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, (<Input as HasExtractorMut>::ExtractorMut<'a>, Args), Output = Result<Output, (Remainder, Args)>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, _: (&'a mut Input, Args), ) -> Output

Source§

impl<'a, Context, Code, Input, Output, Remainder, Handlers> Computer<Context, Code, &'a Input> for MatchWithHandlersRef<Handlers>
where Input: HasExtractorRef, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, <Input as HasExtractorRef>::ExtractorRef<'a>, Output = Result<Output, Remainder>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, input: &'a Input, ) -> Output

Source§

impl<'a, Context, Code, Input, Output, Remainder, Handlers> Computer<Context, Code, &'a mut Input> for MatchWithHandlersMut<Handlers>
where Input: HasExtractorMut, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, <Input as HasExtractorMut>::ExtractorMut<'a>, Output = Result<Output, Remainder>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, input: &'a mut Input, ) -> Output

Source§

impl<Context, Code, Builder, Provider, Output, Res> Computer<Context, Code, Builder> for BuildAndMerge<Provider>
where Provider: for<'a> Computer<Context, Code, &'a Builder, Output = Res>, Builder: CanBuildFrom<Res, Output = Output>,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, builder: Builder, ) -> <BuildAndMerge<Provider> as Computer<Context, Code, Builder>>::Output

Source§

impl<Context, Code, Input, Args, Output, Remainder, Handlers> Computer<Context, Code, (Input, Args)> for MatchFirstWithHandlers<Handlers>
where Input: HasExtractor, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, (<Input as HasExtractor>::Extractor, Args), Output = Result<Output, (Remainder, Args)>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, _: (Input, Args), ) -> Output

Source§

impl<Context, Code, Input, Args, Tag, Value, Provider, Output, Remainder> Computer<Context, Code, (Input, Args)> for ExtractFirstFieldAndHandle<Tag, Provider>
where Input: ExtractField<Tag, Value = Value, Remainder = Remainder>, Provider: Computer<Context, Code, (ω<Tag, Value>, Args), Output = Output>,

Source§

impl<Context, Code, Input, Output, Builder, Handlers, Res> Computer<Context, Code, Input> for BuildWithHandlers<Output, Handlers>
where Output: HasBuilder<Builder = Builder>, PipeHandlers<Handlers>: Computer<Context, Code, Builder, Output = Res>, Res: FinalizeBuild<Target = Output>,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, _input: Input, ) -> <BuildWithHandlers<Output, Handlers> as Computer<Context, Code, Input>>::Output

Source§

impl<Context, Code, Input, Output, Remainder, Handlers> Computer<Context, Code, Input> for MatchWithHandlers<Handlers>
where Input: HasExtractor, PipeMonadic<OkMonadic, Handlers>: Computer<Context, Code, <Input as HasExtractor>::Extractor, Output = Result<Output, Remainder>>, Remainder: FinalizeExtract,

Source§

type Output = Output

Source§

fn compute(context: &Context, code: PhantomData<Code>, input: Input) -> Output

Source§

impl<Context, Code, Input, Provider, Inner, Output, Remainder> Computer<Context, Code, Input> for DowncastAndHandle<Inner, Provider>
where Input: CanDowncastFields<Inner, Remainder = Remainder>, Provider: Computer<Context, Code, Inner, Output = Output>,

Source§

type Output = Result<Output, Remainder>

Source§

fn compute( context: &Context, tag: PhantomData<Code>, input: Input, ) -> Result<Output, Remainder>

Source§

impl<Context, Code, Input, Tag, Output> Computer<Context, Code, Input> for UseField<Tag>
where Context: HasField<Tag>, <Context as HasField<Tag>>::Value: CanCompute<Code, Input, Output = Output>,

Source§

type Output = Output

Source§

fn compute(context: &Context, code: PhantomData<Code>, input: Input) -> Output

Source§

impl<Context, Code, Input, Tag, Value, Provider, Output, Remainder> Computer<Context, Code, Input> for ExtractFieldAndHandle<Tag, Provider>
where Input: ExtractField<Tag, Value = Value, Remainder = Remainder>, Provider: Computer<Context, Code, ω<Tag, Value>, Output = Output>,

Source§

type Output = Result<Output, Remainder>

Source§

fn compute( context: &Context, tag: PhantomData<Code>, input: Input, ) -> Result<Output, Remainder>

Source§

impl<Context, Code, T1, T2, E, M, Cont> Computer<Context, Code, Result<T1, E>> for BindErr<M, Cont>
where Cont: Computer<Context, Code, T1>, M: ContainsValue<<Cont as Computer<Context, Code, T1>>::Output, Value = Result<T2, E>> + LiftValue<Result<T2, E>, <Cont as Computer<Context, Code, T1>>::Output>,

Source§

type Output = <M as LiftValue<Result<T2, E>, <Cont as Computer<Context, Code, T1>>::Output>>::Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, input: Result<T1, E>, ) -> <BindErr<M, Cont> as Computer<Context, Code, Result<T1, E>>>::Output

Source§

impl<Context, Code, T, E1, E2, M, Cont> Computer<Context, Code, Result<T, E1>> for BindOk<M, Cont>
where Cont: Computer<Context, Code, E1>, M: ContainsValue<<Cont as Computer<Context, Code, E1>>::Output, Value = Result<T, E2>> + LiftValue<Result<T, E2>, <Cont as Computer<Context, Code, E1>>::Output>,

Source§

type Output = <M as LiftValue<Result<T, E2>, <Cont as Computer<Context, Code, E1>>::Output>>::Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, input: Result<T, E1>, ) -> <BindOk<M, Cont> as Computer<Context, Code, Result<T, E1>>>::Output

Source§

impl<Context, Code, Tag, Input, Args, Output, Provider> Computer<Context, Code, (ω<Tag, Input>, Args)> for HandleFirstFieldValue<Provider>
where Provider: Computer<Context, Code, (Input, Args), Output = Output>,

Source§

type Output = Output

Source§

fn compute( context: &Context, tag: PhantomData<Code>, _: (ω<Tag, Input>, Args), ) -> <HandleFirstFieldValue<Provider> as Computer<Context, Code, (ω<Tag, Input>, Args)>>::Output

Source§

impl<Context, Code, Tag, Input, Output, Provider> Computer<Context, Code, ω<Tag, Input>> for HandleFieldValue<Provider>
where Provider: Computer<Context, Code, Input, Output = Output>,

Source§

type Output = Output

Source§

fn compute( context: &Context, tag: PhantomData<Code>, input: ω<Tag, Input>, ) -> <HandleFieldValue<Provider> as Computer<Context, Code, ω<Tag, Input>>>::Output

Source§

impl<Context, Code, Tag, Value, Provider, Output, Builder> Computer<Context, Code, Builder> for BuildAndSetField<Tag, Provider>
where Provider: for<'a> Computer<Context, Code, &'a Builder, Output = Value>, Builder: BuildField<Tag, Value = Value, Output = Output>,

Source§

type Output = Output

Source§

fn compute( context: &Context, code: PhantomData<Code>, builder: Builder, ) -> <BuildAndSetField<Tag, Provider> as Computer<Context, Code, Builder>>::Output

Source§

impl<__Context__, Code, Input> Computer<__Context__, Code, Input> for UseContext
where __Context__: CanCompute<Code, Input>,

Source§

type Output = <__Context__ as CanCompute<Code, Input>>::Output

Source§

fn compute( __context__: &__Context__, _code: PhantomData<Code>, input: Input, ) -> <UseContext as Computer<__Context__, Code, Input>>::Output

Source§

impl<__Context__, Code, Input, __Components__, __Delegate__> Computer<__Context__, Code, Input> for UseDelegate<__Components__>
where __Components__: DelegateComponent<Code, Delegate = __Delegate__>, __Delegate__: Computer<__Context__, Code, Input>,

Source§

type Output = <__Delegate__ as Computer<__Context__, Code, Input>>::Output

Source§

fn compute( __context__: &__Context__, _code: PhantomData<Code>, input: Input, ) -> <UseDelegate<__Components__> as Computer<__Context__, Code, Input>>::Output

Implementors§

Source§

impl<Context, Code, Input> Computer<Context, Code, Input> for ReturnInput

Source§

type Output = Input

Source§

impl<Context, Code, Input, Output, Provider> Computer<Context, Code, Input> for Promote<Provider>
where Provider: Producer<Context, Code, Output = Output>,

Source§

type Output = Output

Source§

impl<Context, Code, Input, Provider, Output> Computer<Context, Code, Input> for TryPromote<Provider>
where Context: HasErrorType, Provider: TryComputer<Context, Code, Input, Output = Output>,

Source§

type Output = Result<Output, <Context as HasErrorType>::Error>

Source§

impl<Context, Code, Input, ProviderA, ProviderB> Computer<Context, Code, Input> for ComposeHandlers<ProviderA, ProviderB>
where ProviderA: Computer<Context, Code, Input>, ProviderB: Computer<Context, Code, <ProviderA as Computer<Context, Code, Input>>::Output>,

Source§

type Output = <ProviderB as Computer<Context, Code, <ProviderA as Computer<Context, Code, Input>>::Output>>::Output

Source§

impl<Context, Code, Input, Target, Provider> Computer<Context, Code, Input> for PromoteRef<Provider>
where Provider: ComputerRef<Context, Code, Target>, Input: Deref<Target = Target>,

Source§

type Output = <Provider as ComputerRef<Context, Code, Target>>::Output

Source§

impl<__Component__, __Context__, Code, Input> Computer<__Context__, Code, Input> for __Component__
where __Component__: DelegateComponent<ComputerComponent> + IsProviderFor<ComputerComponent, __Context__, (Code, Input)>, <__Component__ as DelegateComponent<ComputerComponent>>::Delegate: Computer<__Context__, Code, Input>,

Source§

type Output = <<__Component__ as DelegateComponent<ComputerComponent>>::Delegate as Computer<__Context__, Code, Input>>::Output

Source§

impl<__Context__, Code, Input, __Components__, __Delegate__> Computer<__Context__, Code, Input> for UseInputDelegate<__Components__>
where __Components__: DelegateComponent<Input, Delegate = __Delegate__>, __Delegate__: Computer<__Context__, Code, Input>,

Source§

type Output = <__Delegate__ as Computer<__Context__, Code, Input>>::Output