@@ -64,25 +64,24 @@ pub struct TimeDelta {
64
64
65
65
#[ cfg( feature = "serde" ) ]
66
66
impl serde:: Serialize for TimeDelta {
67
- fn serialize < S : serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
68
- <( i64 , i32 ) as serde:: Serialize >:: serialize ( & ( self . secs , self . nanos ) , serializer)
69
- }
67
+ fn serialize < S : serde:: Serializer > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error > {
68
+ <( i64 , i32 ) as serde:: Serialize >:: serialize ( & ( self . secs , self . nanos ) , serializer)
69
+ }
70
70
}
71
71
72
72
#[ cfg( feature = "serde" ) ]
73
73
impl < ' de > serde:: Deserialize < ' de > for TimeDelta {
74
- fn deserialize < D : serde:: Deserializer < ' de > > ( deserializer : D ) -> Result < Self , D :: Error > {
75
- let ( secs, nanos) = <( i64 , i32 ) as serde:: Deserialize >:: deserialize ( deserializer) ?;
76
- if secs < MIN . secs
77
- || secs > MAX . secs
74
+ fn deserialize < D : serde:: Deserializer < ' de > > ( deserializer : D ) -> Result < Self , D :: Error > {
75
+ let ( secs, nanos) = <( i64 , i32 ) as serde:: Deserialize >:: deserialize ( deserializer) ?;
76
+ if !( MIN . secs ..=MAX . secs ) . contains ( & secs)
78
77
|| nanos >= 1_000_000_000
79
78
|| ( secs == MAX . secs && nanos > MAX . nanos )
80
79
|| ( secs == MIN . secs && nanos < MIN . nanos )
81
80
{
82
81
return Err ( serde:: de:: Error :: custom ( "TimeDelta out of bounds" ) ) ;
83
82
}
84
- Ok ( TimeDelta { secs, nanos } )
85
- }
83
+ Ok ( TimeDelta { secs, nanos } )
84
+ }
86
85
}
87
86
88
87
/// The minimum possible `TimeDelta`: `-i64::MAX` milliseconds.
@@ -1333,6 +1332,9 @@ mod tests {
1333
1332
#[ cfg( feature = "serde" ) ]
1334
1333
fn test_serde ( ) {
1335
1334
let duration = TimeDelta :: new ( 123 , 456 ) . unwrap ( ) ;
1336
- assert_eq ! ( serde_json:: from_value:: <TimeDelta >( serde_json:: to_value( & duration) . unwrap( ) ) . unwrap( ) , duration) ;
1335
+ assert_eq ! (
1336
+ serde_json:: from_value:: <TimeDelta >( serde_json:: to_value( duration) . unwrap( ) ) . unwrap( ) ,
1337
+ duration
1338
+ ) ;
1337
1339
}
1338
1340
}
0 commit comments