Skip to main content

sova_core/extract/
query.rs

1use super::FromRequestParts;
2use crate::error::Result;
3use crate::request::Request;
4use serde::de::DeserializeOwned;
5
6/// Query string deserialized into `T`.
7#[derive(Debug, Clone)]
8pub struct Query<T>(pub T);
9
10impl<T> Query<T> {
11    pub fn into_inner(self) -> T {
12        self.0
13    }
14}
15
16impl<T> std::ops::Deref for Query<T> {
17    type Target = T;
18    fn deref(&self) -> &Self::Target {
19        &self.0
20    }
21}
22
23impl<T: DeserializeOwned + Send> FromRequestParts for Query<T> {
24    fn from_request_parts(req: &Request) -> Result<Self> {
25        Ok(Query(req.query_as()?))
26    }
27}