1use super::*;
2
3pub trait HeadRequest: Sized {
5 type Query: ToQuery;
7
8 fn path(&self) -> Cow<'_, str>;
10
11 fn query(&self) -> Self::Query;
13
14 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}