Struct aws_smithy_http_server::plugin::ModelPlugins

source ·
pub struct ModelPlugins<P>(/* private fields */);
Expand description

A wrapper struct for composing model plugins. It operates identically to HttpPlugins; see its documentation.

Implementations§

source§

impl ModelPlugins<IdentityPlugin>

source

pub fn new() -> Self

Create an empty ModelPlugins.

You can use ModelPlugins::push to add plugins to it.

source§

impl<P> ModelPlugins<P>

source

pub fn push<NewPlugin: ModelMarker>( self, new_plugin: NewPlugin, ) -> ModelPlugins<PluginStack<NewPlugin, P>>

Apply a new model plugin after the ones that have already been registered.

use aws_smithy_http_server::plugin::ModelPlugins;

let model_plugins = ModelPlugins::new().push(LoggingPlugin).push(MetricsPlugin);

The plugins’ runtime logic is executed in registration order. In our example above, LoggingPlugin would run first, while MetricsPlugin is executed last.

§Implementation notes

Plugins are applied to the underlying Service in opposite order compared to their registration order.

As an example:

#[derive(Debug)]
pub struct PrintPlugin;

impl<Ser, Op, S> Plugin<Ser, Op, T> for PrintPlugin
// [...]
{
    // [...]
    fn apply(&self, inner: T) -> Self::Service {
        PrintService {
            inner,
            service_id: Ser::ID,
            operation_id: Op::ID
        }
    }
}
source

pub fn layer<L>(self, layer: L) -> ModelPlugins<PluginStack<LayerPlugin<L>, P>>

Applies a single [tower::Layer] to all operations before they are deserialized.

Trait Implementations§

source§

impl<P: Debug> Debug for ModelPlugins<P>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for ModelPlugins<IdentityPlugin>

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<Ser, Op, T, InnerPlugin> Plugin<Ser, Op, T> for ModelPlugins<InnerPlugin>
where InnerPlugin: Plugin<Ser, Op, T>,

§

type Output = <InnerPlugin as Plugin<Ser, Op, T>>::Output

The type of the new Service.
source§

fn apply(&self, input: T) -> Self::Output

Maps a Service to another.
source§

impl<InnerPlugin> ModelMarker for ModelPlugins<InnerPlugin>
where InnerPlugin: ModelMarker,

Auto Trait Implementations§

§

impl<P> Freeze for ModelPlugins<P>
where P: Freeze,

§

impl<P> RefUnwindSafe for ModelPlugins<P>
where P: RefUnwindSafe,

§

impl<P> Send for ModelPlugins<P>
where P: Send,

§

impl<P> Sync for ModelPlugins<P>
where P: Sync,

§

impl<P> Unpin for ModelPlugins<P>
where P: Unpin,

§

impl<P> UnwindSafe for ModelPlugins<P>
where P: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more