1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
macro_rules! merge {
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
$(
if let Some(x) = &$part.$field {
$self.$field.merge_with(x);
}
)+
};
}
macro_rules! merge_clone {
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
$(
if let Some(x) = &$part.$field {
$self.$field.clone_from(x);
}
)+
};
}
macro_rules! merge_clone_opt {
(($self:expr, $part:expr), $($field:ident),+ $(,)*) => {
$(
if $part.$field.is_some() {
$self.$field.clone_from(&$part.$field);
}
)+
};
}
macro_rules! merge_color_gradient {
(($self:expr, $part:expr), $(($color:ident, $gradient:ident)),+ $(,)*) => {
$(
if let Some(x) = $part.$color {
$self.$color = x;
$self.$gradient = None;
}
if let Some(x) = $part.$gradient {
$self.$gradient = Some(x);
}
)+
};
}
macro_rules! merge_color_gradient_opt {
(($self:expr, $part:expr), $(($color:ident, $gradient:ident)),+ $(,)*) => {
$(
if let Some(x) = $part.$color {
$self.$color = Some(x);
$self.$gradient = None;
}
if let Some(x) = $part.$gradient {
$self.$gradient = Some(x);
}
)+
};
}
macro_rules! merge_on_off {
(($self:expr, $part:expr)) => {
if $part.off {
$self.off = true;
$self.on = false;
}
if $part.on {
$self.off = false;
$self.on = true;
}
};
}
|