opensearch_client/common/
stringified_integer.rs1use serde::{Deserialize, Serialize};
11
12
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(untagged)]
16pub enum StringifiedInteger {
17 StringValue(String),
18 IntegerValue(i32),
19}
20
21impl std::fmt::Display for StringifiedInteger {
22 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
23 match self {
24 StringifiedInteger::StringValue(s) => write!(f, "{}", s),
25 StringifiedInteger::IntegerValue(n) => write!(f, "{}", n),
26 }
27 }
28}
29
30
31impl StringifiedInteger {
32 pub fn as_str(&self) -> String {
33 match self {
34 StringifiedInteger::StringValue(s) => s.clone(),
35 StringifiedInteger::IntegerValue(n) => n.to_string(),
36 }
37 }
38
39 pub fn as_num(&self) -> Option<i32> {
40 match self {
41 StringifiedInteger::IntegerValue(n) => Some(*n),
42 _ => None,
43 }
44 }
45}
46
47impl From<i32> for StringifiedInteger {
48 fn from(n: i32) -> Self {
49 StringifiedInteger::IntegerValue(n)
50 }
51}
52
53impl From<&str> for StringifiedInteger {
54 fn from(s: &str) -> Self {
55 StringifiedInteger::StringValue(s.to_string())
56 }
57}
58
59impl From<String> for StringifiedInteger {
60 fn from(s: String) -> Self {
61 StringifiedInteger::StringValue(s)
62 }
63}