axum-error-sets 0.2.2

Typed, composable HTTP error sets for Axum and Aide
Documentation
use super::*;
use std::collections::BTreeMap;
use utoipa::openapi::RefOr;

macro_rules! impl_into_responses {
    ($($error:ident),+ $(,)?) => {
        impl<R, $($error),+> utoipa::IntoResponses for ErrorSet<R, ($($error,)+)>
        where
            R: UtoipaResponseFor,
            $($error: StatusWrapper),+
        {
            fn responses() -> BTreeMap<String, RefOr<utoipa::openapi::Response>> {
                let mut map = BTreeMap::new();
                $(
                    map.insert(
                        $error::STATUS_CODE.as_u16().to_string(),
                        RefOr::T(R::response_for($error::STATUS_CODE)),
                    );
                )+
                map
            }
        }
    };
}

impl_into_responses!(E1);
impl_into_responses!(E1, E2);
impl_into_responses!(E1, E2, E3);
impl_into_responses!(E1, E2, E3, E4);
impl_into_responses!(E1, E2, E3, E4, E5);
impl_into_responses!(E1, E2, E3, E4, E5, E6);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7, E8);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7, E8, E9);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7, E8, E9, E10);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11);
impl_into_responses!(E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12);

impl<R> utoipa::IntoResponses for ErrorSet<R, ()>
where
    R: UtoipaResponseFor,
{
    fn responses() -> BTreeMap<String, RefOr<utoipa::openapi::Response>> {
        BTreeMap::new()
    }
}