1use crate::value::RefValue;
2use crate::value::Value;
3
4macro_rules! from_pos_value_integer {
5 ($($ty:ident)*) => {
6 $(
7 impl From<$ty> for Value {
8 fn from(n: $ty) -> Self {
9 Value::Integer(n.into())
10 }
11 }
12 )*
13 };
14}
15
16from_pos_value_integer! {u8 u16 u32 u64 usize}
17
18macro_rules! from_neg_value_integer {
19 ($($ty:ident)*) => {
20 $(
21 impl From<$ty> for Value {
22 fn from(n: $ty) -> Self {
23 Value::Integer(n.into())
24 }
25 }
26 )*
27 };
28}
29
30from_neg_value_integer! {i8 i16 i32 i64 isize}
31
32impl From<f32> for Value {
33 fn from(v: f32) -> Self {
34 Value::Float(v.into())
35 }
36}
37
38impl From<f64> for Value {
39 fn from(v: f64) -> Self {
40 Value::Float(v.into())
41 }
42}
43
44impl From<bool> for Value {
45 fn from(v: bool) -> Self {
46 Value::Boolean(v)
47 }
48}
49
50impl From<String> for Value {
51 fn from(v: String) -> Self {
52 Value::String(super::utf8_string::Utf8String::new(v))
53 }
54}
55
56macro_rules! from_pos_value_ref_integer {
57 ($($ty:ident)*) => {
58 $(
59 impl<'a> From<$ty> for RefValue<'a> {
60 fn from(n: $ty) -> Self {
61 RefValue::Integer(n.into())
62 }
63 }
64 )*
65 };
66}
67
68from_pos_value_ref_integer! {u8 u16 u32 u64 usize}
69
70macro_rules! from_neg_value_ref_integer {
71 ($($ty:ident)*) => {
72 $(
73 impl<'a> From<$ty> for RefValue<'a> {
74 fn from(n: $ty) -> Self {
75 RefValue::Integer(n.into())
76 }
77 }
78 )*
79 };
80}
81
82from_neg_value_ref_integer! {i8 i16 i32 i64 isize}
83
84impl<'a> From<f32> for RefValue<'a> {
85 fn from(v: f32) -> Self {
86 RefValue::Float(v.into())
87 }
88}
89
90impl<'a> From<f64> for RefValue<'a> {
91 fn from(v: f64) -> Self {
92 RefValue::Float(v.into())
93 }
94}
95
96impl<'a> From<bool> for RefValue<'a> {
97 fn from(v: bool) -> Self {
98 RefValue::Boolean(v)
99 }
100}
101
102impl<'a> From<&'a str> for RefValue<'a> {
103 fn from(v: &'a str) -> Self {
104 RefValue::String(super::utf8_string::Utf8StringRef::new(v))
105 }
106}