toasty_core/stmt/
value_jiff.rs

1use crate::stmt::Value;
2
3macro_rules! impl_jiff_conversions {
4    ($jiff:ty, $name:ident, $lit:literal) => {
5        impl From<$jiff> for Value {
6            fn from(value: $jiff) -> Self {
7                Self::$name(value)
8            }
9        }
10
11        impl TryFrom<Value> for $jiff {
12            type Error = crate::Error;
13
14            fn try_from(value: Value) -> Result<Self, Self::Error> {
15                match value {
16                    Value::$name(value) => Ok(value),
17                    _ => Err(crate::Error::type_conversion(value, $lit)),
18                }
19            }
20        }
21    };
22}
23
24impl_jiff_conversions!(jiff::Timestamp, Timestamp, "Timestamp");
25impl_jiff_conversions!(jiff::Zoned, Zoned, "Zoned");
26impl_jiff_conversions!(jiff::civil::Date, Date, "Date");
27impl_jiff_conversions!(jiff::civil::Time, Time, "Time");
28impl_jiff_conversions!(jiff::civil::DateTime, DateTime, "DateTime");