prost_types/
conversions.rs

1use crate::protobuf::Value;
2use crate::value;
3use crate::String;
4use crate::Vec;
5use ::prost::alloc::collections::BTreeMap;
6
7impl From<value::Kind> for Value {
8    fn from(value: value::Kind) -> Self {
9        Value { kind: Some(value) }
10    }
11}
12
13macro_rules! impl_number_value {
14    ($t: ty) => {
15        impl From<$t> for Value {
16            fn from(value: $t) -> Self {
17                value::Kind::NumberValue(value.into()).into()
18            }
19        }
20    };
21}
22
23impl_number_value!(u8);
24impl_number_value!(u16);
25impl_number_value!(u32);
26
27impl_number_value!(i8);
28impl_number_value!(i16);
29impl_number_value!(i32);
30
31impl_number_value!(f32);
32impl_number_value!(f64);
33
34impl From<bool> for Value {
35    fn from(value: bool) -> Self {
36        value::Kind::BoolValue(value).into()
37    }
38}
39
40impl From<String> for Value {
41    fn from(value: String) -> Self {
42        value::Kind::StringValue(value).into()
43    }
44}
45
46impl From<&str> for Value {
47    fn from(value: &str) -> Self {
48        value::Kind::StringValue(value.into()).into()
49    }
50}
51
52impl From<Vec<Value>> for Value {
53    fn from(value: Vec<Value>) -> Self {
54        value::Kind::ListValue(crate::protobuf::ListValue { values: value }).into()
55    }
56}
57
58impl From<BTreeMap<String, Value>> for Value {
59    fn from(value: BTreeMap<String, Value>) -> Self {
60        value::Kind::StructValue(crate::protobuf::Struct { fields: value }).into()
61    }
62}