qubit_value/multi_values/
multi_values_constructor.rs1trait MultiValuesConstructorSealed<T> {}
15
16#[allow(private_bounds)]
21pub trait MultiValuesConstructor<T>: MultiValuesConstructorSealed<T> {
22 fn from_vec(values: Vec<T>) -> Self;
28}
29
30use std::collections::HashMap;
31use std::time::Duration;
32
33use bigdecimal::BigDecimal;
34use chrono::{
35 DateTime,
36 NaiveDate,
37 NaiveDateTime,
38 NaiveTime,
39 Utc,
40};
41use num_bigint::BigInt;
42use url::Url;
43
44use super::multi_values::MultiValues;
45
46macro_rules! impl_multi_values_constructor {
47 ($type:ty, $variant:ident) => {
48 impl MultiValuesConstructorSealed<$type> for MultiValues {}
49
50 impl MultiValuesConstructor<$type> for MultiValues {
51 #[inline]
52 fn from_vec(values: Vec<$type>) -> Self {
53 MultiValues::$variant(values)
54 }
55 }
56 };
57}
58
59impl_multi_values_constructor!(bool, Bool);
60impl_multi_values_constructor!(char, Char);
61impl_multi_values_constructor!(i8, Int8);
62impl_multi_values_constructor!(i16, Int16);
63impl_multi_values_constructor!(i32, Int32);
64impl_multi_values_constructor!(i64, Int64);
65impl_multi_values_constructor!(i128, Int128);
66impl_multi_values_constructor!(u8, UInt8);
67impl_multi_values_constructor!(u16, UInt16);
68impl_multi_values_constructor!(u32, UInt32);
69impl_multi_values_constructor!(u64, UInt64);
70impl_multi_values_constructor!(u128, UInt128);
71impl_multi_values_constructor!(isize, IntSize);
72impl_multi_values_constructor!(usize, UIntSize);
73impl_multi_values_constructor!(f32, Float32);
74impl_multi_values_constructor!(f64, Float64);
75impl_multi_values_constructor!(String, String);
76impl_multi_values_constructor!(NaiveDate, Date);
77impl_multi_values_constructor!(NaiveTime, Time);
78impl_multi_values_constructor!(NaiveDateTime, DateTime);
79impl_multi_values_constructor!(DateTime<Utc>, Instant);
80impl_multi_values_constructor!(BigInt, BigInteger);
81impl_multi_values_constructor!(BigDecimal, BigDecimal);
82impl_multi_values_constructor!(Duration, Duration);
83impl_multi_values_constructor!(Url, Url);
84impl_multi_values_constructor!(HashMap<String, String>, StringMap);
85impl_multi_values_constructor!(serde_json::Value, Json);