restless_core/
patch.rs

1use super::*;
2use crate::methods::Patch;
3
4/// PATCH [`Request`] method.
5pub trait PatchRequest: Sized {
6    /// Request body type.
7    type Request: Encodable;
8
9    /// Get path of request.
10    fn path(&self) -> Cow<'_, str>;
11
12    /// Get body of request.
13    fn body(&self) -> Self::Request;
14
15    /// Turn self into [`Request`].
16    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}