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}