lemon_graph/
value.rs

1#[derive(Debug, Clone, PartialEq, PartialOrd)]
2pub enum Value {
3    Bool(bool),
4    Bytes(Vec<u8>),
5    F32(f32),
6    ISize(isize),
7    String(String),
8    USize(usize),
9    Vec(Vec<Value>),
10}
11
12impl From<bool> for Value {
13    fn from(value: bool) -> Self {
14        Value::Bool(value)
15    }
16}
17
18impl From<Vec<u8>> for Value {
19    fn from(value: Vec<u8>) -> Self {
20        Value::Bytes(value)
21    }
22}
23
24impl From<f32> for Value {
25    fn from(value: f32) -> Self {
26        Value::F32(value)
27    }
28}
29
30impl From<isize> for Value {
31    fn from(value: isize) -> Self {
32        Value::ISize(value)
33    }
34}
35
36impl From<String> for Value {
37    fn from(value: String) -> Self {
38        Value::String(value)
39    }
40}
41
42impl From<usize> for Value {
43    fn from(value: usize) -> Self {
44        Value::USize(value)
45    }
46}
47
48impl From<Vec<Value>> for Value {
49    fn from(value: Vec<Value>) -> Self {
50        Value::Vec(value)
51    }
52}
53
54impl TryFrom<Value> for bool {
55    type Error = ();
56
57    fn try_from(value: Value) -> Result<Self, Self::Error> {
58        match value {
59            Value::Bool(value) => Ok(value),
60            _ => Err(()),
61        }
62    }
63}
64
65impl TryFrom<Value> for Vec<u8> {
66    type Error = ();
67
68    fn try_from(value: Value) -> Result<Self, Self::Error> {
69        match value {
70            Value::Bytes(value) => Ok(value),
71            _ => Err(()),
72        }
73    }
74}
75
76impl TryFrom<Value> for f32 {
77    type Error = ();
78
79    fn try_from(value: Value) -> Result<Self, Self::Error> {
80        match value {
81            Value::F32(value) => Ok(value),
82            _ => Err(()),
83        }
84    }
85}
86
87impl TryFrom<Value> for isize {
88    type Error = ();
89
90    fn try_from(value: Value) -> Result<Self, Self::Error> {
91        match value {
92            Value::ISize(value) => Ok(value),
93            _ => Err(()),
94        }
95    }
96}
97
98impl TryFrom<Value> for String {
99    type Error = ();
100
101    fn try_from(value: Value) -> Result<Self, Self::Error> {
102        match value {
103            Value::String(value) => Ok(value),
104            _ => Err(()),
105        }
106    }
107}
108
109impl TryFrom<Value> for usize {
110    type Error = ();
111
112    fn try_from(value: Value) -> Result<Self, Self::Error> {
113        match value {
114            Value::USize(value) => Ok(value),
115            _ => Err(()),
116        }
117    }
118}
119
120impl TryFrom<Value> for Vec<Value> {
121    type Error = ();
122
123    fn try_from(value: Value) -> Result<Self, Self::Error> {
124        match value {
125            Value::Vec(value) => Ok(value),
126            _ => Err(()),
127        }
128    }
129}