datadog_api_client/datadogV1/model/
model_distribution_widget_histogram_request_query.rs1use serde::{Deserialize, Deserializer, Serialize};
5
6#[non_exhaustive]
8#[derive(Clone, Debug, PartialEq, Serialize)]
9#[serde(untagged)]
10pub enum DistributionWidgetHistogramRequestQuery {
11 FormulaAndFunctionMetricQueryDefinition(
12 Box<crate::datadogV1::model::FormulaAndFunctionMetricQueryDefinition>,
13 ),
14 FormulaAndFunctionEventQueryDefinition(
15 Box<crate::datadogV1::model::FormulaAndFunctionEventQueryDefinition>,
16 ),
17 FormulaAndFunctionApmResourceStatsQueryDefinition(
18 Box<crate::datadogV1::model::FormulaAndFunctionApmResourceStatsQueryDefinition>,
19 ),
20 UnparsedObject(crate::datadog::UnparsedObject),
21}
22
23impl<'de> Deserialize<'de> for DistributionWidgetHistogramRequestQuery {
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::<
30 Box<crate::datadogV1::model::FormulaAndFunctionMetricQueryDefinition>,
31 >(value.clone())
32 {
33 if !_v._unparsed {
34 return Ok(DistributionWidgetHistogramRequestQuery::FormulaAndFunctionMetricQueryDefinition(_v));
35 }
36 }
37 if let Ok(_v) = serde_json::from_value::<
38 Box<crate::datadogV1::model::FormulaAndFunctionEventQueryDefinition>,
39 >(value.clone())
40 {
41 if !_v._unparsed {
42 return Ok(
43 DistributionWidgetHistogramRequestQuery::FormulaAndFunctionEventQueryDefinition(
44 _v,
45 ),
46 );
47 }
48 }
49 if let Ok(_v) = serde_json::from_value::<
50 Box<crate::datadogV1::model::FormulaAndFunctionApmResourceStatsQueryDefinition>,
51 >(value.clone())
52 {
53 if !_v._unparsed {
54 return Ok(DistributionWidgetHistogramRequestQuery::FormulaAndFunctionApmResourceStatsQueryDefinition(_v));
55 }
56 }
57
58 return Ok(DistributionWidgetHistogramRequestQuery::UnparsedObject(
59 crate::datadog::UnparsedObject { value },
60 ));
61 }
62}