@@ -356,13 +356,12 @@ impl<'de> DeserializeAs<'de, DurationSigned> for DurationSeconds<i64, Strict> {
356
356
where
357
357
D : Deserializer < ' de > ,
358
358
{
359
- i64:: deserialize ( deserializer) . map ( |mut secs : i64 | {
360
- let mut sign = Sign :: Positive ;
361
- if secs. is_negative ( ) {
362
- secs = -secs;
363
- sign = Sign :: Negative ;
364
- }
365
- DurationSigned :: new ( sign, secs as u64 , 0 )
359
+ i64:: deserialize ( deserializer) . map ( |secs : i64 | {
360
+ let sign = match secs. is_negative ( ) {
361
+ true => Sign :: Negative ,
362
+ false => Sign :: Positive ,
363
+ } ;
364
+ DurationSigned :: new ( sign, secs. abs_diff ( 0 ) , 0 )
366
365
} )
367
366
}
368
367
}
@@ -398,13 +397,12 @@ impl<'de> DeserializeAs<'de, DurationSigned> for DurationSeconds<String, Strict>
398
397
where
399
398
E : DeError ,
400
399
{
401
- let mut secs: i64 = value. parse ( ) . map_err ( DeError :: custom) ?;
402
- let mut sign = Sign :: Positive ;
403
- if secs. is_negative ( ) {
404
- secs = -secs;
405
- sign = Sign :: Negative ;
406
- }
407
- Ok ( DurationSigned :: new ( sign, secs as u64 , 0 ) )
400
+ let secs: i64 = value. parse ( ) . map_err ( DeError :: custom) ?;
401
+ let sign = match secs. is_negative ( ) {
402
+ true => Sign :: Negative ,
403
+ false => Sign :: Positive ,
404
+ } ;
405
+ Ok ( DurationSigned :: new ( sign, secs. abs_diff ( 0 ) , 0 ) )
408
406
}
409
407
}
410
408
0 commit comments