@@ -56,15 +56,15 @@ macro_rules! impl_primitive_from_variant {
56
56
}
57
57
}
58
58
} ;
59
- ( $arrow_type: ty $( , $variant_method : ident => $cast_fn: expr ) + ) => {
59
+ ( $arrow_type: ty, $( $variant_type : pat => $variant_method : ident , $ cast_fn: expr ) ,+ $ ( , ) ? ) => {
60
60
impl TimestampFromVariant for $arrow_type {
61
61
fn from_variant( variant: & Variant <' _, ' _>) -> Option <Self :: Native > {
62
- $ (
63
- if let Some ( value ) = variant . $variant_method ( ) {
64
- return Some ( $cast_fn( value ) ) ;
65
- }
66
- ) +
67
- None
62
+ match variant {
63
+ $ (
64
+ $variant_type => variant . $variant_method ( ) . map ( $cast_fn) ,
65
+ ) +
66
+ _ => None
67
+ }
68
68
}
69
69
}
70
70
} ;
@@ -88,11 +88,11 @@ impl_primitive_from_variant!(
88
88
) ;
89
89
impl_primitive_from_variant ! (
90
90
datatypes:: TimestampMicrosecondType ,
91
- as_timestamp_micros => |t| t) ;
91
+ Variant :: TimestampNtzMicros ( _ ) | Variant :: TimestampMicros ( _ ) => as_timestamp_micros , |t| t) ;
92
92
impl_primitive_from_variant ! (
93
93
datatypes:: TimestampNanosecondType ,
94
- as_timestamp_micros => |t| 1000 * t,
95
- as_timestamp_nanos => |t| t) ;
94
+ Variant :: TimestampNtzMicros ( _ ) | Variant :: TimestampMicros ( _ ) => as_timestamp_micros , |t| 1000 * t,
95
+ Variant :: TimestampNtzNanos ( _ ) | Variant :: TimestampNanos ( _ ) => as_timestamp_nanos , |t| t) ;
96
96
97
97
/// Convert the value at a specific index in the given array into a `Variant`.
98
98
macro_rules! non_generic_conversion_single_value {
0 commit comments