restless_core/
head.rs

1use super::*;
2
3/// HEAD [`Request`] method.
4pub trait HeadRequest: Sized {
5    /// Query data type.
6    type Query: ToQuery;
7
8    /// Path of request.
9    fn path(&self) -> Cow<'_, str>;
10
11    /// Query type.
12    fn query(&self) -> Self::Query;
13
14    /// Turn self into a [`Request`].
15    fn request(self) -> Head<Self> {
16        self.into()
17    }
18}
19
20impl<T: HeadRequest> HeadRequest for &T {
21    type Query = T::Query;
22
23    fn path(&self) -> Cow<'_, str> {
24        <T as HeadRequest>::path(self)
25    }
26
27    fn query(&self) -> Self::Query {
28        <T as HeadRequest>::query(self)
29    }
30}
31
32impl<T: HeadRequest> Request for Head<T> {
33    type Request = ();
34    type Response = ();
35    type Query = T::Query;
36
37    fn path(&self) -> Cow<'_, str> {
38        self.inner.path()
39    }
40
41    fn body(&self) -> Self::Request {}
42
43    fn query(&self) -> Self::Query {
44        self.inner.query()
45    }
46
47    fn method(&self) -> Method {
48        Method::Head
49    }
50}