rust_tdlib/types/
dice_stickers.rs1use crate::errors::Result;
2use crate::types::*;
3use uuid::Uuid;
4
5use std::fmt::Debug;
6
7pub trait TDDiceStickers: Debug + RObject {}
9
10#[derive(Debug, Clone, Deserialize, Serialize, Default)]
12#[serde(tag = "@type")]
13pub enum DiceStickers {
14 #[doc(hidden)]
15 #[default]
16 _Default,
17 #[serde(rename = "diceStickersRegular")]
19 Regular(Box<DiceStickersRegular>),
20 #[serde(rename = "diceStickersSlotMachine")]
22 SlotMachine(Box<DiceStickersSlotMachine>),
23}
24
25impl RObject for DiceStickers {
26 #[doc(hidden)]
27 fn extra(&self) -> Option<&str> {
28 match self {
29 DiceStickers::Regular(t) => t.extra(),
30 DiceStickers::SlotMachine(t) => t.extra(),
31
32 _ => None,
33 }
34 }
35 #[doc(hidden)]
36 fn client_id(&self) -> Option<i32> {
37 match self {
38 DiceStickers::Regular(t) => t.client_id(),
39 DiceStickers::SlotMachine(t) => t.client_id(),
40
41 _ => None,
42 }
43 }
44}
45
46impl DiceStickers {
47 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
48 Ok(serde_json::from_str(json.as_ref())?)
49 }
50 #[doc(hidden)]
51 pub fn _is_default(&self) -> bool {
52 matches!(self, DiceStickers::_Default)
53 }
54}
55
56impl AsRef<DiceStickers> for DiceStickers {
57 fn as_ref(&self) -> &DiceStickers {
58 self
59 }
60}
61
62#[derive(Debug, Clone, Default, Serialize, Deserialize)]
64pub struct DiceStickersRegular {
65 #[doc(hidden)]
66 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
67 extra: Option<String>,
68 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
69 client_id: Option<i32>,
70 sticker: Sticker,
72}
73
74impl RObject for DiceStickersRegular {
75 #[doc(hidden)]
76 fn extra(&self) -> Option<&str> {
77 self.extra.as_deref()
78 }
79 #[doc(hidden)]
80 fn client_id(&self) -> Option<i32> {
81 self.client_id
82 }
83}
84
85impl TDDiceStickers for DiceStickersRegular {}
86
87impl DiceStickersRegular {
88 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
89 Ok(serde_json::from_str(json.as_ref())?)
90 }
91 pub fn builder() -> DiceStickersRegularBuilder {
92 let mut inner = DiceStickersRegular::default();
93 inner.extra = Some(Uuid::new_v4().to_string());
94
95 DiceStickersRegularBuilder { inner }
96 }
97
98 pub fn sticker(&self) -> &Sticker {
99 &self.sticker
100 }
101}
102
103#[doc(hidden)]
104pub struct DiceStickersRegularBuilder {
105 inner: DiceStickersRegular,
106}
107
108#[deprecated]
109pub type RTDDiceStickersRegularBuilder = DiceStickersRegularBuilder;
110
111impl DiceStickersRegularBuilder {
112 pub fn build(&self) -> DiceStickersRegular {
113 self.inner.clone()
114 }
115
116 pub fn sticker<T: AsRef<Sticker>>(&mut self, sticker: T) -> &mut Self {
117 self.inner.sticker = sticker.as_ref().clone();
118 self
119 }
120}
121
122impl AsRef<DiceStickersRegular> for DiceStickersRegular {
123 fn as_ref(&self) -> &DiceStickersRegular {
124 self
125 }
126}
127
128impl AsRef<DiceStickersRegular> for DiceStickersRegularBuilder {
129 fn as_ref(&self) -> &DiceStickersRegular {
130 &self.inner
131 }
132}
133
134#[derive(Debug, Clone, Default, Serialize, Deserialize)]
136pub struct DiceStickersSlotMachine {
137 #[doc(hidden)]
138 #[serde(rename(serialize = "@extra", deserialize = "@extra"))]
139 extra: Option<String>,
140 #[serde(rename(serialize = "@client_id", deserialize = "@client_id"))]
141 client_id: Option<i32>,
142 background: Sticker,
144 lever: Sticker,
146 left_reel: Sticker,
148 center_reel: Sticker,
150 right_reel: Sticker,
152}
153
154impl RObject for DiceStickersSlotMachine {
155 #[doc(hidden)]
156 fn extra(&self) -> Option<&str> {
157 self.extra.as_deref()
158 }
159 #[doc(hidden)]
160 fn client_id(&self) -> Option<i32> {
161 self.client_id
162 }
163}
164
165impl TDDiceStickers for DiceStickersSlotMachine {}
166
167impl DiceStickersSlotMachine {
168 pub fn from_json<S: AsRef<str>>(json: S) -> Result<Self> {
169 Ok(serde_json::from_str(json.as_ref())?)
170 }
171 pub fn builder() -> DiceStickersSlotMachineBuilder {
172 let mut inner = DiceStickersSlotMachine::default();
173 inner.extra = Some(Uuid::new_v4().to_string());
174
175 DiceStickersSlotMachineBuilder { inner }
176 }
177
178 pub fn background(&self) -> &Sticker {
179 &self.background
180 }
181
182 pub fn lever(&self) -> &Sticker {
183 &self.lever
184 }
185
186 pub fn left_reel(&self) -> &Sticker {
187 &self.left_reel
188 }
189
190 pub fn center_reel(&self) -> &Sticker {
191 &self.center_reel
192 }
193
194 pub fn right_reel(&self) -> &Sticker {
195 &self.right_reel
196 }
197}
198
199#[doc(hidden)]
200pub struct DiceStickersSlotMachineBuilder {
201 inner: DiceStickersSlotMachine,
202}
203
204#[deprecated]
205pub type RTDDiceStickersSlotMachineBuilder = DiceStickersSlotMachineBuilder;
206
207impl DiceStickersSlotMachineBuilder {
208 pub fn build(&self) -> DiceStickersSlotMachine {
209 self.inner.clone()
210 }
211
212 pub fn background<T: AsRef<Sticker>>(&mut self, background: T) -> &mut Self {
213 self.inner.background = background.as_ref().clone();
214 self
215 }
216
217 pub fn lever<T: AsRef<Sticker>>(&mut self, lever: T) -> &mut Self {
218 self.inner.lever = lever.as_ref().clone();
219 self
220 }
221
222 pub fn left_reel<T: AsRef<Sticker>>(&mut self, left_reel: T) -> &mut Self {
223 self.inner.left_reel = left_reel.as_ref().clone();
224 self
225 }
226
227 pub fn center_reel<T: AsRef<Sticker>>(&mut self, center_reel: T) -> &mut Self {
228 self.inner.center_reel = center_reel.as_ref().clone();
229 self
230 }
231
232 pub fn right_reel<T: AsRef<Sticker>>(&mut self, right_reel: T) -> &mut Self {
233 self.inner.right_reel = right_reel.as_ref().clone();
234 self
235 }
236}
237
238impl AsRef<DiceStickersSlotMachine> for DiceStickersSlotMachine {
239 fn as_ref(&self) -> &DiceStickersSlotMachine {
240 self
241 }
242}
243
244impl AsRef<DiceStickersSlotMachine> for DiceStickersSlotMachineBuilder {
245 fn as_ref(&self) -> &DiceStickersSlotMachine {
246 &self.inner
247 }
248}