Trait FromRequestParts

Source
pub trait FromRequestParts<S>: Sized {
    type Rejection: IntoResponse;

    // Required method
    fn from_request_parts<'life0, 'life1, 'async_trait>(
        parts: &'life0 mut Parts,
        state: &'life1 S,
    ) -> Pin<Box<dyn Future<Output = Result<Self, Self::Rejection>> + Send + 'async_trait>>
       where 'life0: 'async_trait,
             'life1: 'async_trait,
             Self: 'async_trait;
}
Expand description

Types that can be created from request parts.

Extractors that implement FromRequestParts cannot consume the request body and can thus be run in any order for handlers.

If your extractor needs to consume the request body then you should implement FromRequest and not FromRequestParts.

See axum::extract for more general docs about extractors.

Required Associated Typesยง

Source

type Rejection: IntoResponse

If the extractor fails itโ€™ll use this โ€œrejectionโ€ type. A rejection is a kind of error that can be converted into a response.

Required Methodsยง

Source

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Self, Self::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Perform the extraction.

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<S> FromRequestParts<S> for ()
where S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( _: &'life0 mut Parts, _: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(), <() as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (): 'async_trait,

Sourceยง

impl<S> FromRequestParts<S> for HeaderMap
where S: Send + Sync,

Clone the headers from the request.

Prefer using TypedHeader to extract only the headers you need.

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, _: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<HeaderMap, <HeaderMap as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, HeaderMap: 'async_trait,

Sourceยง

impl<S> FromRequestParts<S> for Method
where S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, _: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Method, <Method as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Method: 'async_trait,

Sourceยง

impl<S> FromRequestParts<S> for Uri
where S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, _: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Uri, <Uri as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Uri: 'async_trait,

Sourceยง

impl<S> FromRequestParts<S> for Version
where S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, _: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Version, <Version as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Version: 'async_trait,

Sourceยง

impl<S, T1> FromRequestParts<S> for (T1,)
where T1: FromRequestParts<S> + Send, S: Send + Sync,

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1,), <(T1,) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1,): 'async_trait,

Sourceยง

impl<S, T1, T2> FromRequestParts<S> for (T1, T2)
where T1: FromRequestParts<S> + Send, T2: FromRequestParts<S> + Send, S: Send + Sync,

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2), <(T1, T2) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2): 'async_trait,

Sourceยง

impl<S, T1, T2, T3> FromRequestParts<S> for (T1, T2, T3)
where T1: FromRequestParts<S> + Send, T2: FromRequestParts<S> + Send, T3: FromRequestParts<S> + Send, S: Send + Sync,

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3), <(T1, T2, T3) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4> FromRequestParts<S> for (T1, T2, T3, T4)
where T1: FromRequestParts<S> + Send, T2: FromRequestParts<S> + Send, T3: FromRequestParts<S> + Send, T4: FromRequestParts<S> + Send, S: Send + Sync,

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4), <(T1, T2, T3, T4) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5> FromRequestParts<S> for (T1, T2, T3, T4, T5)
where T1: FromRequestParts<S> + Send, T2: FromRequestParts<S> + Send, T3: FromRequestParts<S> + Send, T4: FromRequestParts<S> + Send, T5: FromRequestParts<S> + Send, S: Send + Sync,

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5), <(T1, T2, T3, T4, T5) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6), <(T1, T2, T3, T4, T5, T6) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7), <(T1, T2, T3, T4, T5, T6, T7) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7, T8), <(T1, T2, T3, T4, T5, T6, T7, T8) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7, T8): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9), <(T1, T2, T3, T4, T5, T6, T7, T8, T9) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7, T8, T9): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10), <(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11), <(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)

Sourceยง

type Rejection = Response<UnsyncBoxBody<Bytes, Error>>

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12), <(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12): 'async_trait,

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)

Sourceยง

impl<S, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> FromRequestParts<S> for (T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

Sourceยง

impl<S, T> FromRequestParts<S> for Option<T>
where T: FromRequestParts<S>, S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Option<T>, <Option<T> as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Option<T>: 'async_trait,

Sourceยง

impl<S, T> FromRequestParts<S> for Result<T, <T as FromRequestParts<S>>::Rejection>
where T: FromRequestParts<S>, S: Send + Sync,

Sourceยง

type Rejection = Infallible

Sourceยง

fn from_request_parts<'life0, 'life1, 'async_trait>( parts: &'life0 mut Parts, state: &'life1 S, ) -> Pin<Box<dyn Future<Output = Result<Result<T, <T as FromRequestParts<S>>::Rejection>, <Result<T, <T as FromRequestParts<S>>::Rejection> as FromRequestParts<S>>::Rejection>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Result<T, <T as FromRequestParts<S>>::Rejection>: 'async_trait,

Implementorsยง

Sourceยง

impl<OuterState, InnerState> FromRequestParts<OuterState> for ContextPart<InnerState>
where OuterState: Send + Sync + 'static, InnerState: FromRef<OuterState> + Send + Sync,

Sourceยง

impl<OuterState, InnerState> FromRequestParts<OuterState> for State<InnerState>
where InnerState: FromRef<OuterState>, OuterState: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for Host
where S: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for MatchedPath
where S: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for OriginalUri
where S: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for RawPathParams
where S: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for RawQuery
where S: Send + Sync,

Sourceยง

impl<S> FromRequestParts<S> for WebSocketUpgrade
where S: Send + Sync,

Sourceยง

impl<S, T> FromRequestParts<S> for ConnectInfo<T>
where S: Send + Sync, T: Clone + Send + Sync + 'static,

Sourceยง

impl<T, S> FromRequestParts<S> for Extension<T>
where T: Clone + Send + Sync + 'static, S: Send + Sync,

Sourceยง

impl<T, S> FromRequestParts<S> for Path<T>
where T: DeserializeOwned + Send, S: Send + Sync,

Sourceยง

impl<T, S> FromRequestParts<S> for Query<T>
where T: DeserializeOwned, S: Send + Sync,

Sourceยง

impl<T, S> FromRequestParts<S> for TypedHeader<T>
where T: Header, S: Send + Sync,