use axum::{ async_trait, body::HttpBody, extract::{ rejection::{FailedToDeserializeQueryString, FormRejection, InvalidFormContentType}, FromRequest, RequestParts, }, BoxError, }; use bytes::Bytes; use http::{header, Method}; use serde::de::DeserializeOwned; use std::ops::Deref; /// Extractor that deserializes `application/x-www-form-urlencoded` requests /// into some type. /// /// `T` is expected to implement [`serde::Deserialize`]. /// /// # Differences from `axum::extract::Form` /// /// This extractor uses [`serde_html_form`] under-the-hood which supports multi-value items. These /// are sent by multiple `` attributes of the same name (e.g. checkboxes) and `