1use serde::{Deserialize, Serialize};
2
3macro_rules! verb {
4 ($vis:vis struct $class:ident { $verb:ident }) => {
5 #[derive(Deserialize, Serialize, Clone, Copy, Debug, Eq, PartialEq)]
6 $vis struct $class {
7 pub $verb: bool
8 }
9
10 impl $class {
11 pub fn as_bool(&self) -> bool {
12 self.$verb
13 }
14 }
15
16 impl From<$class> for bool {
17 fn from($verb: $class) -> bool {
18 $verb.$verb
19 }
20 }
21
22 impl From<bool> for $class {
23 fn from($verb: bool) -> $class {
24 $class { $verb }
25 }
26 }
27 };
28}
29
30verb! { pub struct Deleted { deleted } }
31verb! { pub struct Updated { updated } }
32verb! { pub struct Retweeted { retweeted } }
33verb! { pub struct Liked { liked } }
34verb! { pub struct Bookmarked { bookmarked } }
35verb! { pub struct Hidden { hidden } }
36verb! { pub struct Following { following } }
37verb! { pub struct Blocking { blocking } }
38verb! { pub struct Muting { muting } }
39verb! { pub struct IsMember { is_member } }
40verb! { pub struct Pinned { pinned } }