@@ -304,8 +304,8 @@ impl<'a, 'b: 'a> ser::Serializer for &'a mut Serializer<'b> {
304
304
self . push ( b'"' )
305
305
}
306
306
307
- fn serialize_bytes ( self , _v : & [ u8 ] ) -> Result < Self :: Ok > {
308
- unreachable ! ( )
307
+ fn serialize_bytes ( self , v : & [ u8 ] ) -> Result < Self :: Ok > {
308
+ self . extend_from_slice ( v )
309
309
}
310
310
311
311
fn serialize_none ( self ) -> Result < Self :: Ok > {
@@ -795,4 +795,32 @@ mod tests {
795
795
r#"{"A":{"x":54,"y":720}}"#
796
796
) ;
797
797
}
798
+
799
+ #[ test]
800
+ fn test_serialize_bytes ( ) {
801
+ use core:: fmt:: Write ;
802
+ use heapless:: { consts:: U48 , String } ;
803
+
804
+ pub struct SimpleDecimal ( f32 ) ;
805
+
806
+ impl serde:: Serialize for SimpleDecimal {
807
+ fn serialize < S > ( & self , serializer : S ) -> Result < S :: Ok , S :: Error >
808
+ where
809
+ S : serde:: Serializer ,
810
+ {
811
+ let mut aux: String < U48 > = String :: new ( ) ;
812
+ write ! ( aux, "{:.2}" , self . 0 ) . unwrap ( ) ;
813
+ serializer. serialize_bytes ( & aux. as_bytes ( ) )
814
+ }
815
+ }
816
+
817
+ let sd1 = SimpleDecimal ( 1.55555 ) ;
818
+ assert_eq ! ( & * crate :: to_string:: <N , _>( & sd1) . unwrap( ) , r#"1.56"# ) ;
819
+
820
+ let sd2 = SimpleDecimal ( 0.000 ) ;
821
+ assert_eq ! ( & * crate :: to_string:: <N , _>( & sd2) . unwrap( ) , r#"0.00"# ) ;
822
+
823
+ let sd3 = SimpleDecimal ( 22222.777777 ) ;
824
+ assert_eq ! ( & * crate :: to_string:: <N , _>( & sd3) . unwrap( ) , r#"22222.78"# ) ;
825
+ }
798
826
}
0 commit comments