datadog_api_client/datadogV1/model/
model_split_graph_source_widget_definition.rs1use serde::{Deserialize, Deserializer, Serialize};
5
6#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum SplitGraphSourceWidgetDefinition {
11 ChangeWidgetDefinition(Box<crate::datadogV1::model::ChangeWidgetDefinition>),
12 GeomapWidgetDefinition(Box<crate::datadogV1::model::GeomapWidgetDefinition>),
13 QueryValueWidgetDefinition(Box<crate::datadogV1::model::QueryValueWidgetDefinition>),
14 ScatterPlotWidgetDefinition(Box<crate::datadogV1::model::ScatterPlotWidgetDefinition>),
15 SunburstWidgetDefinition(Box<crate::datadogV1::model::SunburstWidgetDefinition>),
16 TableWidgetDefinition(Box<crate::datadogV1::model::TableWidgetDefinition>),
17 TimeseriesWidgetDefinition(Box<crate::datadogV1::model::TimeseriesWidgetDefinition>),
18 ToplistWidgetDefinition(Box<crate::datadogV1::model::ToplistWidgetDefinition>),
19 TreeMapWidgetDefinition(Box<crate::datadogV1::model::TreeMapWidgetDefinition>),
20 UnparsedObject(crate::datadog::UnparsedObject),
21}
22
23impl<'de> Deserialize<'de> for SplitGraphSourceWidgetDefinition {
24 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
25 where
26 D: Deserializer<'de>,
27 {
28 let value: serde_json::Value = Deserialize::deserialize(deserializer)?;
29 if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV1::model::ChangeWidgetDefinition>>(
30 value.clone(),
31 ) {
32 if !_v._unparsed {
33 return Ok(SplitGraphSourceWidgetDefinition::ChangeWidgetDefinition(_v));
34 }
35 }
36 if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV1::model::GeomapWidgetDefinition>>(
37 value.clone(),
38 ) {
39 if !_v._unparsed {
40 return Ok(SplitGraphSourceWidgetDefinition::GeomapWidgetDefinition(_v));
41 }
42 }
43 if let Ok(_v) = serde_json::from_value::<
44 Box<crate::datadogV1::model::QueryValueWidgetDefinition>,
45 >(value.clone())
46 {
47 if !_v._unparsed {
48 return Ok(SplitGraphSourceWidgetDefinition::QueryValueWidgetDefinition(_v));
49 }
50 }
51 if let Ok(_v) = serde_json::from_value::<
52 Box<crate::datadogV1::model::ScatterPlotWidgetDefinition>,
53 >(value.clone())
54 {
55 if !_v._unparsed {
56 return Ok(SplitGraphSourceWidgetDefinition::ScatterPlotWidgetDefinition(_v));
57 }
58 }
59 if let Ok(_v) = serde_json::from_value::<
60 Box<crate::datadogV1::model::SunburstWidgetDefinition>,
61 >(value.clone())
62 {
63 if !_v._unparsed {
64 return Ok(SplitGraphSourceWidgetDefinition::SunburstWidgetDefinition(
65 _v,
66 ));
67 }
68 }
69 if let Ok(_v) = serde_json::from_value::<Box<crate::datadogV1::model::TableWidgetDefinition>>(
70 value.clone(),
71 ) {
72 if !_v._unparsed {
73 return Ok(SplitGraphSourceWidgetDefinition::TableWidgetDefinition(_v));
74 }
75 }
76 if let Ok(_v) = serde_json::from_value::<
77 Box<crate::datadogV1::model::TimeseriesWidgetDefinition>,
78 >(value.clone())
79 {
80 if !_v._unparsed {
81 return Ok(SplitGraphSourceWidgetDefinition::TimeseriesWidgetDefinition(_v));
82 }
83 }
84 if let Ok(_v) = serde_json::from_value::<
85 Box<crate::datadogV1::model::ToplistWidgetDefinition>,
86 >(value.clone())
87 {
88 if !_v._unparsed {
89 return Ok(SplitGraphSourceWidgetDefinition::ToplistWidgetDefinition(
90 _v,
91 ));
92 }
93 }
94 if let Ok(_v) = serde_json::from_value::<
95 Box<crate::datadogV1::model::TreeMapWidgetDefinition>,
96 >(value.clone())
97 {
98 if !_v._unparsed {
99 return Ok(SplitGraphSourceWidgetDefinition::TreeMapWidgetDefinition(
100 _v,
101 ));
102 }
103 }
104
105 return Ok(SplitGraphSourceWidgetDefinition::UnparsedObject(
106 crate::datadog::UnparsedObject { value },
107 ));
108 }
109}