@@ -9,9 +9,6 @@ use std::net::IpAddr;
99use thiserror:: Error ;
1010use uuid:: Uuid ;
1111
12- #[ cfg( feature = "chrono" ) ]
13- use chrono:: { DateTime , NaiveDate , NaiveTime , TimeZone , Utc } ;
14-
1512use super :: response:: result:: CqlValue ;
1613use super :: types:: vint_encode;
1714use super :: types:: RawValue ;
@@ -464,10 +461,10 @@ pub struct CqlTimestamp(pub i64);
464461#[ derive( Clone , Copy , PartialEq , Eq , Debug ) ]
465462pub struct CqlTime ( pub i64 ) ;
466463
467- #[ cfg( feature = "chrono" ) ]
468- impl From < NaiveDate > for CqlDate {
469- fn from ( value : NaiveDate ) -> Self {
470- let unix_epoch = NaiveDate :: from_yo_opt ( 1970 , 1 ) . unwrap ( ) ;
464+ #[ cfg( feature = "chrono-04 " ) ]
465+ impl From < chrono_04 :: NaiveDate > for CqlDate {
466+ fn from ( value : chrono_04 :: NaiveDate ) -> Self {
467+ let unix_epoch = chrono_04 :: NaiveDate :: from_yo_opt ( 1970 , 1 ) . unwrap ( ) ;
471468
472469 // `NaiveDate` range is -262145-01-01 to 262143-12-31
473470 // Both values are well within supported range
@@ -477,50 +474,52 @@ impl From<NaiveDate> for CqlDate {
477474 }
478475}
479476
480- #[ cfg( feature = "chrono" ) ]
481- impl TryInto < NaiveDate > for CqlDate {
477+ #[ cfg( feature = "chrono-04 " ) ]
478+ impl TryInto < chrono_04 :: NaiveDate > for CqlDate {
482479 type Error = ValueOverflow ;
483480
484- fn try_into ( self ) -> Result < NaiveDate , Self :: Error > {
481+ fn try_into ( self ) -> Result < chrono_04 :: NaiveDate , Self :: Error > {
485482 let days_since_unix_epoch = self . 0 as i64 - ( 1 << 31 ) ;
486483
487484 // date_days is u32 then converted to i64 then we subtract 2^31;
488485 // Max value is 2^31, min value is -2^31. Both values can safely fit in chrono::Duration, this call won't panic
489- let duration_since_unix_epoch = chrono:: Duration :: try_days ( days_since_unix_epoch) . unwrap ( ) ;
486+ let duration_since_unix_epoch =
487+ chrono_04:: Duration :: try_days ( days_since_unix_epoch) . unwrap ( ) ;
490488
491- NaiveDate :: from_yo_opt ( 1970 , 1 )
489+ chrono_04 :: NaiveDate :: from_yo_opt ( 1970 , 1 )
492490 . unwrap ( )
493491 . checked_add_signed ( duration_since_unix_epoch)
494492 . ok_or ( ValueOverflow )
495493 }
496494}
497495
498- #[ cfg( feature = "chrono" ) ]
499- impl From < DateTime < Utc > > for CqlTimestamp {
500- fn from ( value : DateTime < Utc > ) -> Self {
496+ #[ cfg( feature = "chrono-04 " ) ]
497+ impl From < chrono_04 :: DateTime < chrono_04 :: Utc > > for CqlTimestamp {
498+ fn from ( value : chrono_04 :: DateTime < chrono_04 :: Utc > ) -> Self {
501499 Self ( value. timestamp_millis ( ) )
502500 }
503501}
504502
505- #[ cfg( feature = "chrono" ) ]
506- impl TryInto < DateTime < Utc > > for CqlTimestamp {
503+ #[ cfg( feature = "chrono-04 " ) ]
504+ impl TryInto < chrono_04 :: DateTime < chrono_04 :: Utc > > for CqlTimestamp {
507505 type Error = ValueOverflow ;
508506
509- fn try_into ( self ) -> Result < DateTime < Utc > , Self :: Error > {
510- match Utc . timestamp_millis_opt ( self . 0 ) {
511- chrono:: LocalResult :: Single ( datetime) => Ok ( datetime) ,
507+ fn try_into ( self ) -> Result < chrono_04:: DateTime < chrono_04:: Utc > , Self :: Error > {
508+ use chrono_04:: TimeZone ;
509+ match chrono_04:: Utc . timestamp_millis_opt ( self . 0 ) {
510+ chrono_04:: LocalResult :: Single ( datetime) => Ok ( datetime) ,
512511 _ => Err ( ValueOverflow ) ,
513512 }
514513 }
515514}
516515
517- #[ cfg( feature = "chrono" ) ]
518- impl TryFrom < NaiveTime > for CqlTime {
516+ #[ cfg( feature = "chrono-04 " ) ]
517+ impl TryFrom < chrono_04 :: NaiveTime > for CqlTime {
519518 type Error = ValueOverflow ;
520519
521- fn try_from ( value : NaiveTime ) -> Result < Self , Self :: Error > {
520+ fn try_from ( value : chrono_04 :: NaiveTime ) -> Result < Self , Self :: Error > {
522521 let nanos = value
523- . signed_duration_since ( chrono :: NaiveTime :: MIN )
522+ . signed_duration_since ( chrono_04 :: NaiveTime :: MIN )
524523 . num_nanoseconds ( )
525524 . unwrap ( ) ;
526525
@@ -533,18 +532,18 @@ impl TryFrom<NaiveTime> for CqlTime {
533532 }
534533}
535534
536- #[ cfg( feature = "chrono" ) ]
537- impl TryInto < NaiveTime > for CqlTime {
535+ #[ cfg( feature = "chrono-04 " ) ]
536+ impl TryInto < chrono_04 :: NaiveTime > for CqlTime {
538537 type Error = ValueOverflow ;
539538
540- fn try_into ( self ) -> Result < NaiveTime , Self :: Error > {
539+ fn try_into ( self ) -> Result < chrono_04 :: NaiveTime , Self :: Error > {
541540 let secs = ( self . 0 / 1_000_000_000 )
542541 . try_into ( )
543542 . map_err ( |_| ValueOverflow ) ?;
544543 let nanos = ( self . 0 % 1_000_000_000 )
545544 . try_into ( )
546545 . map_err ( |_| ValueOverflow ) ?;
547- NaiveTime :: from_num_seconds_from_midnight_opt ( secs, nanos) . ok_or ( ValueOverflow )
546+ chrono_04 :: NaiveTime :: from_num_seconds_from_midnight_opt ( secs, nanos) . ok_or ( ValueOverflow )
548547 }
549548}
550549
@@ -1007,8 +1006,8 @@ impl Value for bigdecimal_04::BigDecimal {
10071006 }
10081007}
10091008
1010- #[ cfg( feature = "chrono" ) ]
1011- impl Value for NaiveDate {
1009+ #[ cfg( feature = "chrono-04 " ) ]
1010+ impl Value for chrono_04 :: NaiveDate {
10121011 fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
10131012 CqlDate :: from ( * self ) . serialize ( buf)
10141013 }
@@ -1045,8 +1044,8 @@ impl Value for CqlTime {
10451044 }
10461045}
10471046
1048- #[ cfg( feature = "chrono" ) ]
1049- impl Value for DateTime < Utc > {
1047+ #[ cfg( feature = "chrono-04 " ) ]
1048+ impl Value for chrono_04 :: DateTime < chrono_04 :: Utc > {
10501049 fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
10511050 CqlTimestamp :: from ( * self ) . serialize ( buf)
10521051 }
@@ -1059,8 +1058,8 @@ impl Value for time_03::OffsetDateTime {
10591058 }
10601059}
10611060
1062- #[ cfg( feature = "chrono" ) ]
1063- impl Value for NaiveTime {
1061+ #[ cfg( feature = "chrono-04 " ) ]
1062+ impl Value for chrono_04 :: NaiveTime {
10641063 fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
10651064 CqlTime :: try_from ( * self )
10661065 . map_err ( |_| ValueTooBig ) ?
0 commit comments