@@ -9,9 +9,6 @@ use std::net::IpAddr;
9
9
use thiserror:: Error ;
10
10
use uuid:: Uuid ;
11
11
12
- #[ cfg( feature = "chrono" ) ]
13
- use chrono:: { DateTime , NaiveDate , NaiveTime , TimeZone , Utc } ;
14
-
15
12
use super :: response:: result:: CqlValue ;
16
13
use super :: types:: vint_encode;
17
14
use super :: types:: RawValue ;
@@ -464,10 +461,10 @@ pub struct CqlTimestamp(pub i64);
464
461
#[ derive( Clone , Copy , PartialEq , Eq , Debug ) ]
465
462
pub struct CqlTime ( pub i64 ) ;
466
463
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 ( ) ;
471
468
472
469
// `NaiveDate` range is -262145-01-01 to 262143-12-31
473
470
// Both values are well within supported range
@@ -477,50 +474,52 @@ impl From<NaiveDate> for CqlDate {
477
474
}
478
475
}
479
476
480
- #[ cfg( feature = "chrono" ) ]
481
- impl TryInto < NaiveDate > for CqlDate {
477
+ #[ cfg( feature = "chrono-04 " ) ]
478
+ impl TryInto < chrono_04 :: NaiveDate > for CqlDate {
482
479
type Error = ValueOverflow ;
483
480
484
- fn try_into ( self ) -> Result < NaiveDate , Self :: Error > {
481
+ fn try_into ( self ) -> Result < chrono_04 :: NaiveDate , Self :: Error > {
485
482
let days_since_unix_epoch = self . 0 as i64 - ( 1 << 31 ) ;
486
483
487
484
// date_days is u32 then converted to i64 then we subtract 2^31;
488
485
// 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 ( ) ;
490
488
491
- NaiveDate :: from_yo_opt ( 1970 , 1 )
489
+ chrono_04 :: NaiveDate :: from_yo_opt ( 1970 , 1 )
492
490
. unwrap ( )
493
491
. checked_add_signed ( duration_since_unix_epoch)
494
492
. ok_or ( ValueOverflow )
495
493
}
496
494
}
497
495
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 {
501
499
Self ( value. timestamp_millis ( ) )
502
500
}
503
501
}
504
502
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 {
507
505
type Error = ValueOverflow ;
508
506
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) ,
512
511
_ => Err ( ValueOverflow ) ,
513
512
}
514
513
}
515
514
}
516
515
517
- #[ cfg( feature = "chrono" ) ]
518
- impl TryFrom < NaiveTime > for CqlTime {
516
+ #[ cfg( feature = "chrono-04 " ) ]
517
+ impl TryFrom < chrono_04 :: NaiveTime > for CqlTime {
519
518
type Error = ValueOverflow ;
520
519
521
- fn try_from ( value : NaiveTime ) -> Result < Self , Self :: Error > {
520
+ fn try_from ( value : chrono_04 :: NaiveTime ) -> Result < Self , Self :: Error > {
522
521
let nanos = value
523
- . signed_duration_since ( chrono :: NaiveTime :: MIN )
522
+ . signed_duration_since ( chrono_04 :: NaiveTime :: MIN )
524
523
. num_nanoseconds ( )
525
524
. unwrap ( ) ;
526
525
@@ -533,18 +532,18 @@ impl TryFrom<NaiveTime> for CqlTime {
533
532
}
534
533
}
535
534
536
- #[ cfg( feature = "chrono" ) ]
537
- impl TryInto < NaiveTime > for CqlTime {
535
+ #[ cfg( feature = "chrono-04 " ) ]
536
+ impl TryInto < chrono_04 :: NaiveTime > for CqlTime {
538
537
type Error = ValueOverflow ;
539
538
540
- fn try_into ( self ) -> Result < NaiveTime , Self :: Error > {
539
+ fn try_into ( self ) -> Result < chrono_04 :: NaiveTime , Self :: Error > {
541
540
let secs = ( self . 0 / 1_000_000_000 )
542
541
. try_into ( )
543
542
. map_err ( |_| ValueOverflow ) ?;
544
543
let nanos = ( self . 0 % 1_000_000_000 )
545
544
. try_into ( )
546
545
. 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 )
548
547
}
549
548
}
550
549
@@ -1007,8 +1006,8 @@ impl Value for bigdecimal_04::BigDecimal {
1007
1006
}
1008
1007
}
1009
1008
1010
- #[ cfg( feature = "chrono" ) ]
1011
- impl Value for NaiveDate {
1009
+ #[ cfg( feature = "chrono-04 " ) ]
1010
+ impl Value for chrono_04 :: NaiveDate {
1012
1011
fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
1013
1012
CqlDate :: from ( * self ) . serialize ( buf)
1014
1013
}
@@ -1045,8 +1044,8 @@ impl Value for CqlTime {
1045
1044
}
1046
1045
}
1047
1046
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 > {
1050
1049
fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
1051
1050
CqlTimestamp :: from ( * self ) . serialize ( buf)
1052
1051
}
@@ -1059,8 +1058,8 @@ impl Value for time_03::OffsetDateTime {
1059
1058
}
1060
1059
}
1061
1060
1062
- #[ cfg( feature = "chrono" ) ]
1063
- impl Value for NaiveTime {
1061
+ #[ cfg( feature = "chrono-04 " ) ]
1062
+ impl Value for chrono_04 :: NaiveTime {
1064
1063
fn serialize ( & self , buf : & mut Vec < u8 > ) -> Result < ( ) , ValueTooBig > {
1065
1064
CqlTime :: try_from ( * self )
1066
1065
. map_err ( |_| ValueTooBig ) ?
0 commit comments