@@ -304,8 +304,8 @@ impl<'a, 'b: 'a> ser::Serializer for &'a mut Serializer<'b> {
304304 self . push ( b'"' )
305305 }
306306
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 )
309309 }
310310
311311 fn serialize_none ( self ) -> Result < Self :: Ok > {
@@ -795,4 +795,32 @@ mod tests {
795795 r#"{"A":{"x":54,"y":720}}"#
796796 ) ;
797797 }
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+ }
798826}
0 commit comments