pub struct Extension<T>(pub T);Expand description
Extractor that gets a value from request extensions.
This is commonly used to share state across handlers.
Example
use axum::{
extract::Extension,
routing::get,
Router,
};
use std::sync::Arc;
// Some shared state used throughout our application
struct State {
// ...
}
async fn handler(state: Extension<Arc<State>>) {
// ...
}
let state = Arc::new(State { /* ... */ });
let app = Router::new().route("/", get(handler))
// Add middleware that inserts the state into all incoming request's
// extensions.
.layer(Extension(state));If the extension is missing it will reject the request with a 500 Internal Server Error response.
Tuple Fields
0: TTrait Implementations
sourceimpl<T, B> FromRequest<B> for Extension<T> where
T: 'static + Clone + Send + Sync,
B: Send,
impl<T, B> FromRequest<B> for Extension<T> where
T: 'static + Clone + Send + Sync,
B: Send,
type Rejection = ExtensionRejection
type Rejection = ExtensionRejection
If the extractor fails it’ll use this “rejection” type. A rejection is a kind of error that can be converted into a response. Read more
impl<T> Copy for Extension<T> where
T: Copy,
Auto Trait Implementations
impl<T> RefUnwindSafe for Extension<T> where
T: RefUnwindSafe,
impl<T> Send for Extension<T> where
T: Send,
impl<T> Sync for Extension<T> where
T: Sync,
impl<T> Unpin for Extension<T> where
T: Unpin,
impl<T> UnwindSafe for Extension<T> where
T: UnwindSafe,
Blanket Implementations
impl<T, A, P> Access<T> for P where
A: Access<T>,
P: Deref<Target = A>,
impl<T, A, P> Access<T> for P where
A: Access<T>,
P: Deref<Target = A>,
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<T, A> DynAccess<T> for A where
A: Access<T>,
<A as Access<T>>::Guard: 'static,
impl<T, A> DynAccess<T> for A where
A: Access<T>,
<A as Access<T>>::Guard: 'static,
fn load(&self) -> DynGuard<T>
fn load(&self) -> DynGuard<T>
The equivalent of [Access::load].
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
fn vzip(self) -> V
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
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
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber to this type, returning a
WithDispatch wrapper. Read more