1use conjure_object::serde::{ser, de};
2use conjure_object::serde::ser::SerializeMap as SerializeMap_;
3use conjure_object::private::{UnionField_, UnionTypeField_};
4use std::fmt;
5#[derive(Debug, Clone, conjure_object::private::DeriveWith)]
6#[derive_with(PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub enum ComputeNodeAppendResponse {
8 Range(Vec<super::super::super::super::scout::compute::api::Range>),
11 EnumPoint(Option<super::super::super::super::scout::compute::api::EnumPoint>),
13 NumericPoint(Option<super::super::super::super::scout::compute::api::NumericPoint>),
15 SinglePoint(Option<super::super::super::super::scout::compute::api::SinglePoint>),
17 LogPoint(Option<super::super::super::super::scout::compute::api::LogPoint>),
19 RangeValue(Option<super::super::super::super::scout::compute::api::Range>),
22 Numeric(super::super::super::super::scout::compute::api::NumericPlot),
24 Enum(super::super::super::super::scout::compute::api::EnumPlot),
26 BucketedNumeric(
30 super::super::super::super::scout::compute::api::BucketedNumericPlot,
31 ),
32 BucketedEnum(super::super::super::super::scout::compute::api::BucketedEnumPlot),
36 Multivariate(
40 super::super::super::super::scout::compute::api::BucketedMultivariatePlot,
41 ),
42 ArrowNumeric(super::super::super::super::scout::compute::api::ArrowPlot),
44 ArrowEnum(super::super::super::super::scout::compute::api::ArrowPlot),
46 ArrowBucketedNumeric(super::super::super::super::scout::compute::api::ArrowPlot),
50 ArrowBucketedEnum(super::super::super::super::scout::compute::api::ArrowPlot),
54 ArrowBucketedMultivariate(
58 super::super::super::super::scout::compute::api::ArrowPlot,
59 ),
60 ArrowBucketedStruct(super::super::super::super::scout::compute::api::ArrowPlot),
64 ArrowStruct(super::super::super::super::scout::compute::api::ArrowPlot),
66 Grouped(super::GroupedComputeNodeAppendResponses),
68 Unknown(Unknown),
70}
71impl ser::Serialize for ComputeNodeAppendResponse {
72 fn serialize<S>(&self, s: S) -> Result<S::Ok, S::Error>
73 where
74 S: ser::Serializer,
75 {
76 let mut map = s.serialize_map(Some(2))?;
77 match self {
78 ComputeNodeAppendResponse::Range(value) => {
79 map.serialize_entry(&"type", &"range")?;
80 map.serialize_entry(&"range", value)?;
81 }
82 ComputeNodeAppendResponse::EnumPoint(value) => {
83 map.serialize_entry(&"type", &"enumPoint")?;
84 map.serialize_entry(&"enumPoint", value)?;
85 }
86 ComputeNodeAppendResponse::NumericPoint(value) => {
87 map.serialize_entry(&"type", &"numericPoint")?;
88 map.serialize_entry(&"numericPoint", value)?;
89 }
90 ComputeNodeAppendResponse::SinglePoint(value) => {
91 map.serialize_entry(&"type", &"singlePoint")?;
92 map.serialize_entry(&"singlePoint", value)?;
93 }
94 ComputeNodeAppendResponse::LogPoint(value) => {
95 map.serialize_entry(&"type", &"logPoint")?;
96 map.serialize_entry(&"logPoint", value)?;
97 }
98 ComputeNodeAppendResponse::RangeValue(value) => {
99 map.serialize_entry(&"type", &"rangeValue")?;
100 map.serialize_entry(&"rangeValue", value)?;
101 }
102 ComputeNodeAppendResponse::Numeric(value) => {
103 map.serialize_entry(&"type", &"numeric")?;
104 map.serialize_entry(&"numeric", value)?;
105 }
106 ComputeNodeAppendResponse::Enum(value) => {
107 map.serialize_entry(&"type", &"enum")?;
108 map.serialize_entry(&"enum", value)?;
109 }
110 ComputeNodeAppendResponse::BucketedNumeric(value) => {
111 map.serialize_entry(&"type", &"bucketedNumeric")?;
112 map.serialize_entry(&"bucketedNumeric", value)?;
113 }
114 ComputeNodeAppendResponse::BucketedEnum(value) => {
115 map.serialize_entry(&"type", &"bucketedEnum")?;
116 map.serialize_entry(&"bucketedEnum", value)?;
117 }
118 ComputeNodeAppendResponse::Multivariate(value) => {
119 map.serialize_entry(&"type", &"multivariate")?;
120 map.serialize_entry(&"multivariate", value)?;
121 }
122 ComputeNodeAppendResponse::ArrowNumeric(value) => {
123 map.serialize_entry(&"type", &"arrowNumeric")?;
124 map.serialize_entry(&"arrowNumeric", value)?;
125 }
126 ComputeNodeAppendResponse::ArrowEnum(value) => {
127 map.serialize_entry(&"type", &"arrowEnum")?;
128 map.serialize_entry(&"arrowEnum", value)?;
129 }
130 ComputeNodeAppendResponse::ArrowBucketedNumeric(value) => {
131 map.serialize_entry(&"type", &"arrowBucketedNumeric")?;
132 map.serialize_entry(&"arrowBucketedNumeric", value)?;
133 }
134 ComputeNodeAppendResponse::ArrowBucketedEnum(value) => {
135 map.serialize_entry(&"type", &"arrowBucketedEnum")?;
136 map.serialize_entry(&"arrowBucketedEnum", value)?;
137 }
138 ComputeNodeAppendResponse::ArrowBucketedMultivariate(value) => {
139 map.serialize_entry(&"type", &"arrowBucketedMultivariate")?;
140 map.serialize_entry(&"arrowBucketedMultivariate", value)?;
141 }
142 ComputeNodeAppendResponse::ArrowBucketedStruct(value) => {
143 map.serialize_entry(&"type", &"arrowBucketedStruct")?;
144 map.serialize_entry(&"arrowBucketedStruct", value)?;
145 }
146 ComputeNodeAppendResponse::ArrowStruct(value) => {
147 map.serialize_entry(&"type", &"arrowStruct")?;
148 map.serialize_entry(&"arrowStruct", value)?;
149 }
150 ComputeNodeAppendResponse::Grouped(value) => {
151 map.serialize_entry(&"type", &"grouped")?;
152 map.serialize_entry(&"grouped", value)?;
153 }
154 ComputeNodeAppendResponse::Unknown(value) => {
155 map.serialize_entry(&"type", &value.type_)?;
156 map.serialize_entry(&value.type_, &value.value)?;
157 }
158 }
159 map.end()
160 }
161}
162impl<'de> de::Deserialize<'de> for ComputeNodeAppendResponse {
163 fn deserialize<D>(d: D) -> Result<ComputeNodeAppendResponse, D::Error>
164 where
165 D: de::Deserializer<'de>,
166 {
167 d.deserialize_map(Visitor_)
168 }
169}
170struct Visitor_;
171impl<'de> de::Visitor<'de> for Visitor_ {
172 type Value = ComputeNodeAppendResponse;
173 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
174 fmt.write_str("union ComputeNodeAppendResponse")
175 }
176 fn visit_map<A>(self, mut map: A) -> Result<ComputeNodeAppendResponse, A::Error>
177 where
178 A: de::MapAccess<'de>,
179 {
180 let v = match map.next_key::<UnionField_<Variant_>>()? {
181 Some(UnionField_::Type) => {
182 let variant = map.next_value()?;
183 let key = map.next_key()?;
184 match (variant, key) {
185 (Variant_::Range, Some(Variant_::Range)) => {
186 let value = map.next_value()?;
187 ComputeNodeAppendResponse::Range(value)
188 }
189 (Variant_::EnumPoint, Some(Variant_::EnumPoint)) => {
190 let value = map.next_value()?;
191 ComputeNodeAppendResponse::EnumPoint(value)
192 }
193 (Variant_::NumericPoint, Some(Variant_::NumericPoint)) => {
194 let value = map.next_value()?;
195 ComputeNodeAppendResponse::NumericPoint(value)
196 }
197 (Variant_::SinglePoint, Some(Variant_::SinglePoint)) => {
198 let value = map.next_value()?;
199 ComputeNodeAppendResponse::SinglePoint(value)
200 }
201 (Variant_::LogPoint, Some(Variant_::LogPoint)) => {
202 let value = map.next_value()?;
203 ComputeNodeAppendResponse::LogPoint(value)
204 }
205 (Variant_::RangeValue, Some(Variant_::RangeValue)) => {
206 let value = map.next_value()?;
207 ComputeNodeAppendResponse::RangeValue(value)
208 }
209 (Variant_::Numeric, Some(Variant_::Numeric)) => {
210 let value = map.next_value()?;
211 ComputeNodeAppendResponse::Numeric(value)
212 }
213 (Variant_::Enum, Some(Variant_::Enum)) => {
214 let value = map.next_value()?;
215 ComputeNodeAppendResponse::Enum(value)
216 }
217 (Variant_::BucketedNumeric, Some(Variant_::BucketedNumeric)) => {
218 let value = map.next_value()?;
219 ComputeNodeAppendResponse::BucketedNumeric(value)
220 }
221 (Variant_::BucketedEnum, Some(Variant_::BucketedEnum)) => {
222 let value = map.next_value()?;
223 ComputeNodeAppendResponse::BucketedEnum(value)
224 }
225 (Variant_::Multivariate, Some(Variant_::Multivariate)) => {
226 let value = map.next_value()?;
227 ComputeNodeAppendResponse::Multivariate(value)
228 }
229 (Variant_::ArrowNumeric, Some(Variant_::ArrowNumeric)) => {
230 let value = map.next_value()?;
231 ComputeNodeAppendResponse::ArrowNumeric(value)
232 }
233 (Variant_::ArrowEnum, Some(Variant_::ArrowEnum)) => {
234 let value = map.next_value()?;
235 ComputeNodeAppendResponse::ArrowEnum(value)
236 }
237 (
238 Variant_::ArrowBucketedNumeric,
239 Some(Variant_::ArrowBucketedNumeric),
240 ) => {
241 let value = map.next_value()?;
242 ComputeNodeAppendResponse::ArrowBucketedNumeric(value)
243 }
244 (Variant_::ArrowBucketedEnum, Some(Variant_::ArrowBucketedEnum)) => {
245 let value = map.next_value()?;
246 ComputeNodeAppendResponse::ArrowBucketedEnum(value)
247 }
248 (
249 Variant_::ArrowBucketedMultivariate,
250 Some(Variant_::ArrowBucketedMultivariate),
251 ) => {
252 let value = map.next_value()?;
253 ComputeNodeAppendResponse::ArrowBucketedMultivariate(value)
254 }
255 (
256 Variant_::ArrowBucketedStruct,
257 Some(Variant_::ArrowBucketedStruct),
258 ) => {
259 let value = map.next_value()?;
260 ComputeNodeAppendResponse::ArrowBucketedStruct(value)
261 }
262 (Variant_::ArrowStruct, Some(Variant_::ArrowStruct)) => {
263 let value = map.next_value()?;
264 ComputeNodeAppendResponse::ArrowStruct(value)
265 }
266 (Variant_::Grouped, Some(Variant_::Grouped)) => {
267 let value = map.next_value()?;
268 ComputeNodeAppendResponse::Grouped(value)
269 }
270 (Variant_::Unknown(type_), Some(Variant_::Unknown(b))) => {
271 if type_ == b {
272 let value = map.next_value()?;
273 ComputeNodeAppendResponse::Unknown(Unknown { type_, value })
274 } else {
275 return Err(
276 de::Error::invalid_value(de::Unexpected::Str(&type_), &&*b),
277 )
278 }
279 }
280 (variant, Some(key)) => {
281 return Err(
282 de::Error::invalid_value(
283 de::Unexpected::Str(key.as_str()),
284 &variant.as_str(),
285 ),
286 );
287 }
288 (variant, None) => {
289 return Err(de::Error::missing_field(variant.as_str()));
290 }
291 }
292 }
293 Some(UnionField_::Value(variant)) => {
294 let value = match &variant {
295 Variant_::Range => {
296 let value = map.next_value()?;
297 ComputeNodeAppendResponse::Range(value)
298 }
299 Variant_::EnumPoint => {
300 let value = map.next_value()?;
301 ComputeNodeAppendResponse::EnumPoint(value)
302 }
303 Variant_::NumericPoint => {
304 let value = map.next_value()?;
305 ComputeNodeAppendResponse::NumericPoint(value)
306 }
307 Variant_::SinglePoint => {
308 let value = map.next_value()?;
309 ComputeNodeAppendResponse::SinglePoint(value)
310 }
311 Variant_::LogPoint => {
312 let value = map.next_value()?;
313 ComputeNodeAppendResponse::LogPoint(value)
314 }
315 Variant_::RangeValue => {
316 let value = map.next_value()?;
317 ComputeNodeAppendResponse::RangeValue(value)
318 }
319 Variant_::Numeric => {
320 let value = map.next_value()?;
321 ComputeNodeAppendResponse::Numeric(value)
322 }
323 Variant_::Enum => {
324 let value = map.next_value()?;
325 ComputeNodeAppendResponse::Enum(value)
326 }
327 Variant_::BucketedNumeric => {
328 let value = map.next_value()?;
329 ComputeNodeAppendResponse::BucketedNumeric(value)
330 }
331 Variant_::BucketedEnum => {
332 let value = map.next_value()?;
333 ComputeNodeAppendResponse::BucketedEnum(value)
334 }
335 Variant_::Multivariate => {
336 let value = map.next_value()?;
337 ComputeNodeAppendResponse::Multivariate(value)
338 }
339 Variant_::ArrowNumeric => {
340 let value = map.next_value()?;
341 ComputeNodeAppendResponse::ArrowNumeric(value)
342 }
343 Variant_::ArrowEnum => {
344 let value = map.next_value()?;
345 ComputeNodeAppendResponse::ArrowEnum(value)
346 }
347 Variant_::ArrowBucketedNumeric => {
348 let value = map.next_value()?;
349 ComputeNodeAppendResponse::ArrowBucketedNumeric(value)
350 }
351 Variant_::ArrowBucketedEnum => {
352 let value = map.next_value()?;
353 ComputeNodeAppendResponse::ArrowBucketedEnum(value)
354 }
355 Variant_::ArrowBucketedMultivariate => {
356 let value = map.next_value()?;
357 ComputeNodeAppendResponse::ArrowBucketedMultivariate(value)
358 }
359 Variant_::ArrowBucketedStruct => {
360 let value = map.next_value()?;
361 ComputeNodeAppendResponse::ArrowBucketedStruct(value)
362 }
363 Variant_::ArrowStruct => {
364 let value = map.next_value()?;
365 ComputeNodeAppendResponse::ArrowStruct(value)
366 }
367 Variant_::Grouped => {
368 let value = map.next_value()?;
369 ComputeNodeAppendResponse::Grouped(value)
370 }
371 Variant_::Unknown(type_) => {
372 let value = map.next_value()?;
373 ComputeNodeAppendResponse::Unknown(Unknown {
374 type_: type_.clone(),
375 value,
376 })
377 }
378 };
379 if map.next_key::<UnionTypeField_>()?.is_none() {
380 return Err(de::Error::missing_field("type"));
381 }
382 let type_variant = map.next_value::<Variant_>()?;
383 if variant != type_variant {
384 return Err(
385 de::Error::invalid_value(
386 de::Unexpected::Str(type_variant.as_str()),
387 &variant.as_str(),
388 ),
389 );
390 }
391 value
392 }
393 None => return Err(de::Error::missing_field("type")),
394 };
395 if map.next_key::<UnionField_<Variant_>>()?.is_some() {
396 return Err(de::Error::invalid_length(3, &"type and value fields"));
397 }
398 Ok(v)
399 }
400}
401#[derive(PartialEq)]
402enum Variant_ {
403 Range,
404 EnumPoint,
405 NumericPoint,
406 SinglePoint,
407 LogPoint,
408 RangeValue,
409 Numeric,
410 Enum,
411 BucketedNumeric,
412 BucketedEnum,
413 Multivariate,
414 ArrowNumeric,
415 ArrowEnum,
416 ArrowBucketedNumeric,
417 ArrowBucketedEnum,
418 ArrowBucketedMultivariate,
419 ArrowBucketedStruct,
420 ArrowStruct,
421 Grouped,
422 Unknown(Box<str>),
423}
424impl Variant_ {
425 fn as_str(&self) -> &'static str {
426 match *self {
427 Variant_::Range => "range",
428 Variant_::EnumPoint => "enumPoint",
429 Variant_::NumericPoint => "numericPoint",
430 Variant_::SinglePoint => "singlePoint",
431 Variant_::LogPoint => "logPoint",
432 Variant_::RangeValue => "rangeValue",
433 Variant_::Numeric => "numeric",
434 Variant_::Enum => "enum",
435 Variant_::BucketedNumeric => "bucketedNumeric",
436 Variant_::BucketedEnum => "bucketedEnum",
437 Variant_::Multivariate => "multivariate",
438 Variant_::ArrowNumeric => "arrowNumeric",
439 Variant_::ArrowEnum => "arrowEnum",
440 Variant_::ArrowBucketedNumeric => "arrowBucketedNumeric",
441 Variant_::ArrowBucketedEnum => "arrowBucketedEnum",
442 Variant_::ArrowBucketedMultivariate => "arrowBucketedMultivariate",
443 Variant_::ArrowBucketedStruct => "arrowBucketedStruct",
444 Variant_::ArrowStruct => "arrowStruct",
445 Variant_::Grouped => "grouped",
446 Variant_::Unknown(_) => "unknown variant",
447 }
448 }
449}
450impl<'de> de::Deserialize<'de> for Variant_ {
451 fn deserialize<D>(d: D) -> Result<Variant_, D::Error>
452 where
453 D: de::Deserializer<'de>,
454 {
455 d.deserialize_str(VariantVisitor_)
456 }
457}
458struct VariantVisitor_;
459impl<'de> de::Visitor<'de> for VariantVisitor_ {
460 type Value = Variant_;
461 fn expecting(&self, fmt: &mut fmt::Formatter) -> fmt::Result {
462 fmt.write_str("string")
463 }
464 fn visit_str<E>(self, value: &str) -> Result<Variant_, E>
465 where
466 E: de::Error,
467 {
468 let v = match value {
469 "range" => Variant_::Range,
470 "enumPoint" => Variant_::EnumPoint,
471 "numericPoint" => Variant_::NumericPoint,
472 "singlePoint" => Variant_::SinglePoint,
473 "logPoint" => Variant_::LogPoint,
474 "rangeValue" => Variant_::RangeValue,
475 "numeric" => Variant_::Numeric,
476 "enum" => Variant_::Enum,
477 "bucketedNumeric" => Variant_::BucketedNumeric,
478 "bucketedEnum" => Variant_::BucketedEnum,
479 "multivariate" => Variant_::Multivariate,
480 "arrowNumeric" => Variant_::ArrowNumeric,
481 "arrowEnum" => Variant_::ArrowEnum,
482 "arrowBucketedNumeric" => Variant_::ArrowBucketedNumeric,
483 "arrowBucketedEnum" => Variant_::ArrowBucketedEnum,
484 "arrowBucketedMultivariate" => Variant_::ArrowBucketedMultivariate,
485 "arrowBucketedStruct" => Variant_::ArrowBucketedStruct,
486 "arrowStruct" => Variant_::ArrowStruct,
487 "grouped" => Variant_::Grouped,
488 value => Variant_::Unknown(value.to_string().into_boxed_str()),
489 };
490 Ok(v)
491 }
492}
493#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
495pub struct Unknown {
496 type_: Box<str>,
497 value: conjure_object::Any,
498}
499impl Unknown {
500 #[inline]
502 pub fn type_(&self) -> &str {
503 &self.type_
504 }
505}