qubit_value/multi_values/
multi_values_setter_slice.rs1use crate::value_error::ValueResult;
14use std::collections::HashMap;
15use std::time::Duration;
16
17use bigdecimal::BigDecimal;
18use chrono::{
19 DateTime,
20 NaiveDate,
21 NaiveDateTime,
22 NaiveTime,
23 Utc,
24};
25use num_bigint::BigInt;
26use url::Url;
27
28use super::multi_values::MultiValues;
29
30pub trait MultiValuesSetterSlice<T>: super::sealed::MultiValuesSetterSliceSealed<T> {
35 fn set_values_slice(&mut self, values: &[T]) -> ValueResult<()>;
42}
43
44macro_rules! impl_multi_values_setter_slice {
45 ($type:ty, $variant:ident) => {
46 impl super::sealed::MultiValuesSetterSliceSealed<$type> for MultiValues {}
47
48 impl MultiValuesSetterSlice<$type> for MultiValues {
49 #[inline]
50 fn set_values_slice(&mut self, values: &[$type]) -> ValueResult<()> {
51 *self = MultiValues::$variant(values.to_vec());
52 Ok(())
53 }
54 }
55 };
56}
57
58impl_multi_values_setter_slice!(bool, Bool);
59impl_multi_values_setter_slice!(char, Char);
60impl_multi_values_setter_slice!(i8, Int8);
61impl_multi_values_setter_slice!(i16, Int16);
62impl_multi_values_setter_slice!(i32, Int32);
63impl_multi_values_setter_slice!(i64, Int64);
64impl_multi_values_setter_slice!(i128, Int128);
65impl_multi_values_setter_slice!(u8, UInt8);
66impl_multi_values_setter_slice!(u16, UInt16);
67impl_multi_values_setter_slice!(u32, UInt32);
68impl_multi_values_setter_slice!(u64, UInt64);
69impl_multi_values_setter_slice!(u128, UInt128);
70impl_multi_values_setter_slice!(isize, IntSize);
71impl_multi_values_setter_slice!(usize, UIntSize);
72impl_multi_values_setter_slice!(f32, Float32);
73impl_multi_values_setter_slice!(f64, Float64);
74impl_multi_values_setter_slice!(String, String);
75impl_multi_values_setter_slice!(NaiveDate, Date);
76impl_multi_values_setter_slice!(NaiveTime, Time);
77impl_multi_values_setter_slice!(NaiveDateTime, DateTime);
78impl_multi_values_setter_slice!(DateTime<Utc>, Instant);
79impl_multi_values_setter_slice!(BigInt, BigInteger);
80impl_multi_values_setter_slice!(BigDecimal, BigDecimal);
81impl_multi_values_setter_slice!(Duration, Duration);
82impl_multi_values_setter_slice!(Url, Url);
83impl_multi_values_setter_slice!(HashMap<String, String>, StringMap);
84impl_multi_values_setter_slice!(serde_json::Value, Json);