rust_tdlib/types/
ok.rs

1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5/// An object of this type is returned on a successful function call for certain functions
6#[derive(Debug, Clone, Default, Serialize, Deserialize)]
7pub struct Ok {
8    #[doc(hidden)]
9    #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
10    extra: Option<String>,
11    #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
12    client_id: Option<i32>,
13}
14
15impl RObject for Ok {
16    #[doc(hidden)]
17    fn extra(&self) -> Option<&str> {
18        self.extra.as_deref()
19    }
20    #[doc(hidden)]
21    fn client_id(&self) -> Option<i32> {
22        self.client_id
23    }
24}
25
26impl Ok {
27    pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
28        Ok(serde_json::from_str(json.as_ref())?)
29    }
30    pub fn builder() -> OkBuilder {
31        let mut inner = Ok::default();
32        inner.extra = Some(Uuid::new_v4().to_string());
33
34        OkBuilder { inner }
35    }
36}
37
38#[doc(hidden)]
39pub struct OkBuilder {
40    inner: Ok,
41}
42
43#[deprecated]
44pub type RTDOkBuilder = OkBuilder;
45
46impl OkBuilder {
47    pub fn build(&self) -> Ok {
48        self.inner.clone()
49    }
50}
51
52impl AsRef<Ok> for Ok {
53    fn as_ref(&self) -> &Ok {
54        self
55    }
56}
57
58impl AsRef<Ok> for OkBuilder {
59    fn as_ref(&self) -> &Ok {
60        &self.inner
61    }
62}