@@ -468,9 +468,11 @@ impl ConvIr<Vec<u8>> for Vec<u8> {
468468impl ConvIr < PrimitiveDateTime > for ParseIr < PrimitiveDateTime > {
469469 fn new ( value : Value ) -> Result < ParseIr < PrimitiveDateTime > , FromValueError > {
470470 match value {
471- Value :: Date ( y, m, d, h, i, s, u) => Ok ( ParseIr {
472- value : Value :: Date ( y, m, d, h, i, s, u) ,
473- output : match create_primitive_date_time ( y, m, d, h, i, s, u) {
471+ Value :: Date ( year, month, day, hour, minute, second, micros) => Ok ( ParseIr {
472+ value : Value :: Date ( year, month, day, hour, minute, second, micros) ,
473+ output : match create_primitive_date_time (
474+ year, month, day, hour, minute, second, micros,
475+ ) {
474476 Some ( datetime) => datetime,
475477 None => return Err ( FromValueError ( value) ) ,
476478 } ,
@@ -497,9 +499,9 @@ impl ConvIr<PrimitiveDateTime> for ParseIr<PrimitiveDateTime> {
497499impl ConvIr < Date > for ParseIr < Date > {
498500 fn new ( value : Value ) -> Result < ParseIr < Date > , FromValueError > {
499501 match value {
500- Value :: Date ( y , m , d , h , i , s , u ) => Ok ( ParseIr {
501- value : Value :: Date ( y , m , d , h , i , s , u ) ,
502- output : match Date :: try_from_ymd ( y as i32 , m , d ) {
502+ Value :: Date ( year , month , day , hour , minute , second , micros ) => Ok ( ParseIr {
503+ value : Value :: Date ( year , month , day , hour , minute , second , micros ) ,
504+ output : match Date :: try_from_ymd ( year as i32 , month , day ) {
503505 Ok ( date) => date,
504506 Err ( _) => return Err ( FromValueError ( value) ) ,
505507 } ,
@@ -561,16 +563,16 @@ impl ConvIr<Time> for ParseIr<Time> {
561563
562564#[ inline]
563565fn create_primitive_date_time (
564- y : u16 ,
565- m : u8 ,
566- d : u8 ,
567- h : u8 ,
568- i : u8 ,
569- s : u8 ,
570- u : u32 ,
566+ year : u16 ,
567+ month : u8 ,
568+ day : u8 ,
569+ hour : u8 ,
570+ minute : u8 ,
571+ second : u8 ,
572+ micros : u32 ,
571573) -> Option < PrimitiveDateTime > {
572- if let Ok ( date) = Date :: try_from_ymd ( y as i32 , m , d ) {
573- if let Ok ( time) = Time :: try_from_hms_micro ( h , i , s , u ) {
574+ if let Ok ( date) = Date :: try_from_ymd ( year as i32 , month , day ) {
575+ if let Ok ( time) = Time :: try_from_hms_micro ( hour , minute , second , micros ) {
574576 return Some ( PrimitiveDateTime :: new ( date, time) ) ;
575577 }
576578 }
@@ -595,15 +597,26 @@ fn parse_mysql_time_string_with_time(bytes: &[u8]) -> Result<Time, ParseError> {
595597impl ConvIr < NaiveDateTime > for ParseIr < NaiveDateTime > {
596598 fn new ( value : Value ) -> Result < ParseIr < NaiveDateTime > , FromValueError > {
597599 let result = match value {
598- Value :: Date ( y, m, d, h, i, s, u) => {
599- let date = NaiveDate :: from_ymd_opt ( y. into ( ) , m. into ( ) , d. into ( ) ) ;
600- let time = NaiveTime :: from_hms_micro_opt ( h. into ( ) , i. into ( ) , s. into ( ) , u) ;
601- Ok ( ( date, time, Value :: Date ( y, m, d, h, i, s, u) ) )
600+ Value :: Date ( year, month, day, hour, minute, second, micros) => {
601+ let date = NaiveDate :: from_ymd_opt ( year. into ( ) , month. into ( ) , day. into ( ) ) ;
602+ let time = NaiveTime :: from_hms_micro_opt (
603+ hour. into ( ) ,
604+ minute. into ( ) ,
605+ second. into ( ) ,
606+ micros,
607+ ) ;
608+ Ok ( (
609+ date,
610+ time,
611+ Value :: Date ( year, month, day, hour, minute, second, micros) ,
612+ ) )
602613 }
603614 Value :: Bytes ( bytes) => {
604- if let Some ( ( y, m, d, h, i, s, u) ) = parse_mysql_datetime_string ( & * bytes) {
605- let date = NaiveDate :: from_ymd_opt ( y as i32 , m, d) ;
606- let time = NaiveTime :: from_hms_micro_opt ( h, i, s, u) ;
615+ if let Some ( ( year, month, day, hour, minute, second, micros) ) =
616+ parse_mysql_datetime_string ( & * bytes)
617+ {
618+ let date = NaiveDate :: from_ymd_opt ( year as i32 , month, day) ;
619+ let time = NaiveTime :: from_hms_micro_opt ( hour, minute, second, micros) ;
607620 Ok ( ( date, time, Value :: Bytes ( bytes) ) )
608621 } else {
609622 Err ( FromValueError ( Value :: Bytes ( bytes) ) )
@@ -614,10 +627,10 @@ impl ConvIr<NaiveDateTime> for ParseIr<NaiveDateTime> {
614627
615628 let ( date, time, value) = result?;
616629
617- if date. is_some ( ) && time . is_some ( ) {
630+ if let ( Some ( date) , Some ( time ) ) = ( date , time ) {
618631 Ok ( ParseIr {
619632 value,
620- output : NaiveDateTime :: new ( date. unwrap ( ) , time. unwrap ( ) ) ,
633+ output : NaiveDateTime :: new ( date, time) ,
621634 } )
622635 } else {
623636 Err ( FromValueError ( value) )
@@ -634,9 +647,12 @@ impl ConvIr<NaiveDateTime> for ParseIr<NaiveDateTime> {
634647impl ConvIr < NaiveDate > for ParseIr < NaiveDate > {
635648 fn new ( value : Value ) -> Result < ParseIr < NaiveDate > , FromValueError > {
636649 let result = match value {
637- Value :: Date ( y, m, d, h, i, s, u) => {
638- let date = NaiveDate :: from_ymd_opt ( y. into ( ) , m. into ( ) , d. into ( ) ) ;
639- Ok ( ( date, Value :: Date ( y, m, d, h, i, s, u) ) )
650+ Value :: Date ( year, month, day, hour, minute, second, micros) => {
651+ let date = NaiveDate :: from_ymd_opt ( year. into ( ) , month. into ( ) , day. into ( ) ) ;
652+ Ok ( (
653+ date,
654+ Value :: Date ( year, month, day, hour, minute, second, micros) ,
655+ ) )
640656 }
641657 Value :: Bytes ( bytes) => {
642658 if let Some ( ( y, m, d, _, _, _, _) ) = parse_mysql_datetime_string ( & * bytes) {
@@ -651,11 +667,8 @@ impl ConvIr<NaiveDate> for ParseIr<NaiveDate> {
651667
652668 let ( date, value) = result?;
653669
654- if date. is_some ( ) {
655- Ok ( ParseIr {
656- value,
657- output : date. unwrap ( ) ,
658- } )
670+ if let Some ( output) = date {
671+ Ok ( ParseIr { value, output } )
659672 } else {
660673 Err ( FromValueError ( value) )
661674 }
@@ -812,11 +825,8 @@ impl ConvIr<NaiveTime> for ParseIr<NaiveTime> {
812825
813826 let ( time, value) = result?;
814827
815- if time. is_some ( ) {
816- Ok ( ParseIr {
817- value,
818- output : time. unwrap ( ) ,
819- } )
828+ if let Some ( output) = time {
829+ Ok ( ParseIr { value, output } )
820830 } else {
821831 Err ( FromValueError ( value) )
822832 }
@@ -1070,7 +1080,7 @@ impl From<u128> for Value {
10701080
10711081impl From < f32 > for Value {
10721082 fn from ( x : f32 ) -> Value {
1073- Value :: Float ( x. into ( ) )
1083+ Value :: Float ( x)
10741084 }
10751085}
10761086
0 commit comments