1use super::*;
2use crate::methods::Patch;
3
4pub trait PatchRequest: Sized {
6 type Request: Encodable;
8
9 fn path(&self) -> Cow<'_, str>;
11
12 fn body(&self) -> Self::Request;
14
15 fn request(self) -> Patch<Self> {
17 self.into()
18 }
19}
20
21impl<T: PatchRequest> PatchRequest for &T {
22 type Request = T::Request;
23
24 fn path(&self) -> Cow<'_, str> {
25 <T as PatchRequest>::path(self)
26 }
27
28 fn body(&self) -> Self::Request {
29 <T as PatchRequest>::body(self)
30 }
31}
32
33impl<T: PatchRequest> Request for Patch<T> {
34 type Request = T::Request;
35 type Response = ();
36 type Query = ();
37
38 fn path(&self) -> Cow<'_, str> {
39 self.inner.path()
40 }
41
42 fn body(&self) -> Self::Request {
43 self.inner.body()
44 }
45
46 fn query(&self) -> Self::Query {}
47
48 fn method(&self) -> Method {
49 Method::Patch
50 }
51}