Trait OperationService

Source
pub trait OperationService<Op, Exts>: Service<Self::Normalized, Response = Op::Output, Error = Op::Error>
where Op: OperationShape,
{ type Normalized; // Required method fn normalize(input: Op::Input, exts: Exts) -> Self::Normalized; }
Expand description

A utility trait used to provide an even interface for all operation services.

This serves to take [Service]s of the form Service<(Op::Input, Ext0, Ext1, ...)> to the canonical representation of Service<(Input, (Ext0, Ext1, ...))> inline with IntoService.

See operation documentation for more info.

Required Associated Types§

Required Methods§

Source

fn normalize(input: Op::Input, exts: Exts) -> Self::Normalized

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.

Implementors§

Source§

impl<Op, Ext0, Ext1, S> OperationService<Op, (Ext0, Ext1)> for S
where Op: OperationShape, S: Service<(Op::Input, Ext0, Ext1), Response = Op::Output, Error = Op::Error>,

Source§

type Normalized = (<Op as OperationShape>::Input, Ext0, Ext1)

Source§

impl<Op, Ext0, S> OperationService<Op, (Ext0,)> for S
where Op: OperationShape, S: Service<(Op::Input, Ext0), Response = Op::Output, Error = Op::Error>,

Source§

type Normalized = (<Op as OperationShape>::Input, Ext0)

Source§

impl<Op, S> OperationService<Op, ()> for S
where Op: OperationShape, S: Service<Op::Input, Response = Op::Output, Error = Op::Error>,