1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Default)]
5#[serde(rename_all = "camelCase")]
6pub struct NodeUpdate {
7 #[serde(skip_serializing_if = "Option::is_none")]
8 pub label: Option<String>,
9 #[serde(skip_serializing_if = "Option::is_none")]
10 pub size: Option<f32>,
11 #[serde(skip_serializing_if = "Option::is_none")]
12 pub url: Option<String>,
13 #[serde(skip_serializing_if = "Option::is_none")]
14 pub red: Option<u8>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 pub green: Option<u8>,
17 #[serde(skip_serializing_if = "Option::is_none")]
18 pub blue: Option<u8>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 pub show_label: Option<bool>,
21}
22
23impl std::ops::AddAssign for NodeUpdate {
24 fn add_assign(&mut self, other: NodeUpdate) {
25 if let Some(label) = other.label {
26 self.label = Some(label);
27 }
28 if let Some(size) = other.size {
29 self.size = Some(size);
30 }
31 if let Some(url) = other.url {
32 self.url = Some(url);
33 }
34 if let Some(red) = other.red {
35 self.red = Some(red);
36 }
37 if let Some(green) = other.green {
38 self.green = Some(green);
39 }
40 if let Some(blue) = other.blue {
41 self.blue = Some(blue);
42 }
43 if let Some(show_label) = other.show_label {
44 self.show_label = Some(show_label);
45 }
46 }
47}