File tree 1 file changed +21
-6
lines changed
1 file changed +21
-6
lines changed Original file line number Diff line number Diff line change @@ -189,12 +189,9 @@ where
189
189
190
190
#[ inline]
191
191
fn serialize_bytes ( self , value : & [ u8 ] ) -> Result < ( ) > {
192
- use serde:: ser:: SerializeSeq ;
193
- let mut seq = tri ! ( self . serialize_seq( Some ( value. len( ) ) ) ) ;
194
- for byte in value {
195
- tri ! ( seq. serialize_element( byte) ) ;
196
- }
197
- seq. end ( )
192
+ self . formatter
193
+ . write_byte_array ( & mut self . writer , value)
194
+ . map_err ( Error :: io)
198
195
}
199
196
200
197
#[ inline]
@@ -1770,6 +1767,24 @@ pub trait Formatter {
1770
1767
writer. write_all ( s)
1771
1768
}
1772
1769
1770
+ /// Writes the representation of a byte array. Formatters can choose whether
1771
+ /// to represent bytes as a JSON array of integers (the default), or some
1772
+ /// JSON string encoding like hex or base64.
1773
+ fn write_byte_array < W > ( & mut self , writer : & mut W , value : & [ u8 ] ) -> io:: Result < ( ) >
1774
+ where
1775
+ W : ?Sized + io:: Write ,
1776
+ {
1777
+ tri ! ( self . begin_array( writer) ) ;
1778
+ let mut first = true ;
1779
+ for byte in value {
1780
+ tri ! ( self . begin_array_value( writer, first) ) ;
1781
+ tri ! ( self . write_u8( writer, * byte) ) ;
1782
+ tri ! ( self . end_array_value( writer) ) ;
1783
+ first = false ;
1784
+ }
1785
+ self . end_array ( writer)
1786
+ }
1787
+
1773
1788
/// Called before every array. Writes a `[` to the specified
1774
1789
/// writer.
1775
1790
#[ inline]
You can’t perform that action at this time.
0 commit comments