@@ -596,33 +596,34 @@ mod impl_rustc {
596
596
mod impl_serde {
597
597
extern crate serde;
598
598
use self :: serde:: { Serialize , Serializer , Deserialize , Deserializer } ;
599
- use self :: serde:: de:: Error ;
599
+ use self :: serde:: de:: { Error , Unexpected } ;
600
600
use super :: { OrderedFloat , NotNaN } ;
601
601
use num_traits:: Float ;
602
+ use std:: f64;
602
603
603
604
impl < T : Float + Serialize > Serialize for OrderedFloat < T > {
604
- fn serialize < S : Serializer > ( & self , s : & mut S ) -> Result < ( ) , S :: Error > {
605
+ fn serialize < S : Serializer > ( & self , s : S ) -> Result < S :: Ok , S :: Error > {
605
606
self . 0 . serialize ( s)
606
607
}
607
608
}
608
609
609
610
impl < T : Float + Deserialize > Deserialize for OrderedFloat < T > {
610
- fn deserialize < D : Deserializer > ( d : & mut D ) -> Result < Self , D :: Error > {
611
+ fn deserialize < D : Deserializer > ( d : D ) -> Result < Self , D :: Error > {
611
612
T :: deserialize ( d) . map ( OrderedFloat )
612
613
}
613
614
}
614
615
615
616
impl < T : Float + Serialize > Serialize for NotNaN < T > {
616
- fn serialize < S : Serializer > ( & self , s : & mut S ) -> Result < ( ) , S :: Error > {
617
+ fn serialize < S : Serializer > ( & self , s : S ) -> Result < S :: Ok , S :: Error > {
617
618
self . 0 . serialize ( s)
618
619
}
619
620
}
620
621
621
622
impl < T : Float + Deserialize > Deserialize for NotNaN < T > {
622
- fn deserialize < D : Deserializer > ( d : & mut D ) -> Result < Self , D :: Error > {
623
+ fn deserialize < D : Deserializer > ( d : D ) -> Result < Self , D :: Error > {
623
624
T :: deserialize ( d) . and_then ( |v| {
624
625
NotNaN :: new ( v)
625
- . map_err ( |_| <D :: Error as Error >:: invalid_value ( "value cannot be NaN") )
626
+ . map_err ( |_| <D :: Error as Error >:: invalid_value ( Unexpected :: Float ( f64 :: NAN ) , & " NaN") )
626
627
} )
627
628
}
628
629
}
0 commit comments