Struct AppendHeaders

#[must_use]
pub struct AppendHeaders<I>(pub I);

Append headers to a response.

Returning something like [("content-type", "foo=bar")] from a handler will override any existing content-type headers. If instead you want to append headers, use AppendHeaders:

use axum::{
    response::{AppendHeaders, IntoResponse},
    http::header::SET_COOKIE,
};

async fn handler() -> impl IntoResponse {
    // something that sets the `set-cookie` header
    let set_some_cookies = /* ... */
    # axum::http::HeaderMap::new();

    (
        set_some_cookies,
        // append two `set-cookie` headers to the response
        // without overriding the ones added by `set_some_cookies`
        AppendHeaders([
            (SET_COOKIE, "foo=bar"),
            (SET_COOKIE, "baz=qux"),
        ])
    )
}

Fields

0: I

Trait Implementations

impl<I, K, V> IntoResponse for AppendHeaders<I> where I: IntoIterator<Item = (K, V)>, K: TryInto<HeaderName>, K::Error: Display, V: TryInto<HeaderValue>, V::Error: Display,

fn into_response(self) -> Response

impl<I, K, V> IntoResponseParts for AppendHeaders<I> where I: IntoIterator<Item = (K, V)>, K: TryInto<HeaderName>, K::Error: Display, V: TryInto<HeaderValue>, V::Error: Display,

type Error = TryIntoHeaderError<<K as TryInto<HeaderName>>::Error, <V as TryInto<HeaderValue>>::Error>;
fn into_response_parts(self, res: ResponseParts) -> Result<ResponseParts, Self::Error>

impl<I: Clone> Clone for AppendHeaders<I>

fn clone(&self) -> AppendHeaders<I>

impl<I: Copy> Copy for AppendHeaders<I>

impl<I: Debug> Debug for AppendHeaders<I>

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

Auto Trait Implementations

impl<I> Freeze for AppendHeaders<I> where I: Freeze,

impl<I> RefUnwindSafe for AppendHeaders<I> where I: RefUnwindSafe,

impl<I> Send for AppendHeaders<I> where I: Send,

impl<I> Sync for AppendHeaders<I> where I: Sync,

impl<I> Unpin for AppendHeaders<I> where I: Unpin,

impl<I> UnsafeUnpin for AppendHeaders<I> where I: UnsafeUnpin,

impl<I> UnwindSafe for AppendHeaders<I> where I: UnwindSafe,

Blanket Implementations

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

fn type_id(&self) -> TypeId

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

fn borrow(&self) -> &T

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

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

impl<T> CloneToUninit for AppendHeaders<I> where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for AppendHeaders<I>

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> FromRef<T> for AppendHeaders<I> where T: Clone,

fn from_ref(input: &T) -> T

impl<T> Instrument for AppendHeaders<I>

impl<T> ToOwned for AppendHeaders<I> where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T> WithSubscriber for AppendHeaders<I>

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

fn into(self) -> U

Calls U::from(self).

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

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

type Error = never;
fn try_from(value: U) -> Result<T, never>

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

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