Skip to main content

RequestPipeline

Struct RequestPipeline 

Source
pub struct RequestPipeline { /* private fields */ }
Expand description

Sequential runner for a chain of ContextServices. The pipeline owns the services and threads a Context through them one after another, short-circuiting on the first error.

This replaces the legacy MiddlewareRegistry::process loop.

Implementations§

Source§

impl RequestPipeline

Source

pub const fn new() -> Self

Create an empty pipeline.

Source

pub const fn from_services(services: Vec<ContextService>) -> Self

Build a pipeline from a vec of services.

Source

pub fn push(&mut self, svc: ContextService)

Push a service onto the end of the pipeline.

Source

pub const fn len(&self) -> usize

Number of registered services.

Source

pub const fn is_empty(&self) -> bool

Whether the pipeline has no services registered.

Source

pub async fn run(&mut self, ctx: Context) -> Result<Context>

Run every service in registration order, threading the Context through. Returns the final Context once the chain completes, or the first YetiError.

§Errors

Surfaces the first Err returned by any registered service. Subsequent services are skipped.

Source

pub fn services(&self) -> &[ContextService]

Borrow the underlying service vector (for snapshots / cloning).

Source

pub fn into_composed(self) -> ContextService

Compose every registered service into a single ContextService. Per-request the host clones the composed service (one Arc bump) and calls it once — versus the unfrozen path which clones every service per request and allocates a Vec. Used by the router’s freeze_middleware to build the hot-path snapshot.

Trait Implementations§

Source§

impl Debug for RequestPipeline

Source§

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

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

impl Default for RequestPipeline

Source§

fn default() -> Self

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

Auto Trait Implementations§

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.

Source§

impl<T> Instrument for T

Source§

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

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

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> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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>,

Source§

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.
Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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