use axum::extract::{FromRequest, Request}; use validator::Validate; use crate::validation::ValidRejection; #[derive(Debug, Clone, Copy, Default)] pub struct Valid(pub T); impl FromRequest for Valid where State: Send + Sync, Extractor: Validate + FromRequest, { type Rejection = ValidRejection<>::Rejection>; async fn from_request(req: Request, state: &State) -> Result { let inner = Extractor::from_request(req, state) .await .map_err(ValidRejection::Extractor)?; inner.validate()?; Ok(Valid(inner)) } }