msgpack/value/
from.rs

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}