tycho/into/
value.rs

1use crate::types::ident::{NumberIdent, ValueIdent};
2use crate::Value;
3
4/// Identities for a value.
5pub trait ValueType: Into<Value> {
6    const IDENT: ValueIdent;
7}
8
9macro_rules! impl_value_type {
10    ($type: ty, $ident: expr) => {
11         impl ValueType for $type {
12            const IDENT: ValueIdent = $ident;
13         }
14    };
15}
16
17impl_value_type!(bool, ValueIdent::Boolean);
18impl_value_type!(u8, ValueIdent::Number(NumberIdent::Unsigned8));
19impl_value_type!(i8, ValueIdent::Number(NumberIdent::Signed8));
20impl_value_type!(u16, ValueIdent::Number(NumberIdent::Unsigned16));
21impl_value_type!(i16, ValueIdent::Number(NumberIdent::Signed16));
22impl_value_type!(u32, ValueIdent::Number(NumberIdent::Unsigned32));
23impl_value_type!(i32, ValueIdent::Number(NumberIdent::Signed32));
24impl_value_type!(u64, ValueIdent::Number(NumberIdent::Unsigned64));
25impl_value_type!(i64, ValueIdent::Number(NumberIdent::Signed64));
26impl_value_type!(u128, ValueIdent::Number(NumberIdent::Unsigned128));
27impl_value_type!(i128, ValueIdent::Number(NumberIdent::Signed128));
28impl_value_type!(f32, ValueIdent::Number(NumberIdent::Float32));
29impl_value_type!(f64, ValueIdent::Number(NumberIdent::Float64));
30impl_value_type!(String, ValueIdent::String);
31impl_value_type!(&str, ValueIdent::String);
32impl_value_type!(char, ValueIdent::Char);
33//impl_value_type!((), ValueIdent::Null);
34impl_value_type!(Vec<u8>, ValueIdent::Bytes);
35impl_value_type!(crate::Uuid, ValueIdent::UUID);