axum/axum-macros/tests/from_request/pass/named.rs
David Pedersen f6fc5ed80c
Move axum-debug into axum-macros (#724)
* Move axum-debug into axum-macros

* fix ref to axum-macros in changelog

* Apply suggestions from code review

Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com>

Co-authored-by: Jonas Platte <jplatte@users.noreply.github.com>
2022-01-26 23:27:22 +01:00

51 lines
1.4 KiB
Rust

use axum::{
body::Body,
extract::{FromRequest, TypedHeader, rejection::{TypedHeaderRejection, StringRejection}},
headers::{self, UserAgent},
};
use axum_macros::FromRequest;
use std::convert::Infallible;
#[derive(FromRequest)]
struct Extractor {
uri: axum::http::Uri,
user_agent: TypedHeader<UserAgent>,
content_type: TypedHeader<headers::ContentType>,
etag: Option<TypedHeader<headers::ETag>>,
host: Result<TypedHeader<headers::Host>, TypedHeaderRejection>,
body: String,
}
fn assert_from_request()
where
Extractor: FromRequest<Body, Rejection = ExtractorRejection>,
{
}
fn assert_rejection(rejection: ExtractorRejection)
where
ExtractorRejection: std::fmt::Debug + std::fmt::Display + std::error::Error,
{
match rejection {
ExtractorRejection::Uri(inner) => {
let _: Infallible = inner;
}
ExtractorRejection::Body(inner) => {
let _: StringRejection = inner;
}
ExtractorRejection::UserAgent(inner) => {
let _: TypedHeaderRejection = inner;
}
ExtractorRejection::ContentType(inner) => {
let _: TypedHeaderRejection = inner;
}
ExtractorRejection::Etag(inner) => {
let _: Infallible = inner;
}
ExtractorRejection::Host(inner) => {
let _: Infallible = inner;
}
}
}
fn main() {}