1+ use chrono:: { DateTime , NaiveDateTime , Utc } ;
12use serde:: { Deserialize , Serialize } ;
2- use chrono:: { NaiveDateTime , DateTime , Utc } ;
33
44#[ derive( Clone , Debug , Hash , Serialize , Deserialize , Eq , PartialEq , Ord , PartialOrd ) ]
55pub struct RouteDateTime {
@@ -8,33 +8,26 @@ pub struct RouteDateTime {
88}
99
1010impl RouteDateTime {
11- pub fn from_range (
12- start : & Option < String > ,
13- end : & Option < String > ,
14- ) -> RouteDateTime {
11+ pub fn from_range ( start : & Option < String > , end : & Option < String > ) -> RouteDateTime {
1512 let mut route_start = None ;
1613 let mut route_end = None ;
1714 match start {
1815 None => ( ) ,
19- Some ( datetime) => {
20- match datetime. parse :: < DateTime < Utc > > ( ) {
21- Ok ( dt) => route_start = Some ( dt. naive_utc ( ) ) ,
22- Err ( err) => {
23- log:: error!( "cannot parse datetime {}: {}" , datetime, err) ;
24- }
16+ Some ( datetime) => match datetime. parse :: < DateTime < Utc > > ( ) {
17+ Ok ( dt) => route_start = Some ( dt. naive_utc ( ) ) ,
18+ Err ( err) => {
19+ log:: error!( "cannot parse datetime {}: {}" , datetime, err) ;
2520 }
26- }
21+ } ,
2722 }
2823 match end {
2924 None => ( ) ,
30- Some ( datetime) => {
31- match datetime. parse :: < DateTime < Utc > > ( ) {
32- Ok ( dt) => route_end = Some ( dt. naive_utc ( ) ) ,
33- Err ( err) => {
34- log:: error!( "cannot parse datetime {}: {}" , datetime, err) ;
35- }
25+ Some ( datetime) => match datetime. parse :: < DateTime < Utc > > ( ) {
26+ Ok ( dt) => route_end = Some ( dt. naive_utc ( ) ) ,
27+ Err ( err) => {
28+ log:: error!( "cannot parse datetime {}: {}" , datetime, err) ;
3629 }
37- }
30+ } ,
3831 }
3932 return RouteDateTime {
4033 start : route_start,
@@ -45,18 +38,14 @@ impl RouteDateTime {
4538 pub fn match_datetime ( & self , datetime : & DateTime < Utc > ) -> bool {
4639 let naive_datetime = datetime. naive_utc ( ) ;
4740 match self . start {
48- None => {
49- match self . end {
50- None => true ,
51- Some ( end) => naive_datetime < end,
52- }
41+ None => match self . end {
42+ None => true ,
43+ Some ( end) => naive_datetime < end,
44+ } ,
45+ Some ( start) => match self . end {
46+ None => naive_datetime >= start,
47+ Some ( end) => ( naive_datetime >= start) && ( naive_datetime < end) ,
5348 } ,
54- Some ( start) => {
55- match self . end {
56- None => naive_datetime >= start,
57- Some ( end) => ( naive_datetime >= start) && ( naive_datetime < end) ,
58- }
59- }
6049 }
6150 }
6251}
0 commit comments