Skip to main content

opensearch_client/common/
string_or_string_array.rs

1/*
2 * opensearch-client
3 *
4 * Rust Client for OpenSearch
5 *
6 * The version of the OpenAPI document: 3.1.0
7 * Contact: alberto.paro@gmail.com
8 * Generated by Paro OpenAPI Generator
9 */
10
11use serde::{Deserialize, Serialize};
12
13
14
15#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
16#[serde(untagged)]
17pub enum StringOrStringArray {
18    StringValue(String),
19    ArrayValue(Vec<String>),
20}
21
22impl std::fmt::Display for StringOrStringArray {
23    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
24        match self {
25            StringOrStringArray::StringValue(s) => write!(f, "{}", s),
26            StringOrStringArray::ArrayValue(v) => write!(f, "{}", v.join(",")),
27        }
28    }
29}
30
31
32impl StringOrStringArray {
33    pub fn as_vec(&self) -> Vec<String> {
34        match self {
35            StringOrStringArray::StringValue(s) => vec![s.clone()],
36            StringOrStringArray::ArrayValue(v) => v.clone(),
37        }
38    }
39}
40
41impl Default for StringOrStringArray {
42    fn default() -> Self {
43        StringOrStringArray::ArrayValue(Vec::new())
44    }
45}
46
47// Allow constructing StringOrStringArray from String
48impl From<String> for StringOrStringArray {
49    fn from(s: String) -> Self {
50        StringOrStringArray::StringValue(s)
51    }
52}
53
54// Allow constructing StringOrStringArray from &str
55impl From<&str> for StringOrStringArray {
56    fn from(s: &str) -> Self {
57        StringOrStringArray::StringValue(s.to_string())
58    }
59}
60
61// Allow constructing StringOrStringArray from Vec<String>
62impl From<Vec<String>> for StringOrStringArray {
63    fn from(v: Vec<String>) -> Self {
64        StringOrStringArray::ArrayValue(v)
65    }
66}
67
68// Allow constructing StringOrStringArray from Vec<&str>
69impl From<Vec<&str>> for StringOrStringArray {
70    fn from(v: Vec<&str>) -> Self {
71        StringOrStringArray::ArrayValue(v.into_iter().map(|s| s.to_string()).collect())
72    }
73}