sova_core/extract/
form.rs1use super::{ExtractFuture, FromRequest};
2use crate::error::Result;
3use crate::request::Request;
4use serde::de::DeserializeOwned;
5
6#[derive(Debug, Clone)]
8pub struct Form<T>(pub T);
9
10impl<T> Form<T> {
11 pub fn into_inner(self) -> T {
12 self.0
13 }
14}
15
16impl<T> std::ops::Deref for Form<T> {
17 type Target = T;
18 fn deref(&self) -> &Self::Target {
19 &self.0
20 }
21}
22
23impl<T: DeserializeOwned + Send + 'static> FromRequest for Form<T> {
24 fn from_request(req: &mut Request) -> ExtractFuture<'_, Result<Self>> {
25 Box::pin(async move {
26 let value: T = req.form().await?;
27 Ok(Form(value))
28 })
29 }
30}