@@ -187,29 +187,10 @@ where
187
187
format_escaped_str ( & mut self . writer , & mut self . formatter , value) . map_err ( Error :: io)
188
188
}
189
189
190
+ #[ inline]
190
191
fn serialize_bytes ( self , value : & [ u8 ] ) -> Result < ( ) > {
191
- tri ! ( self
192
- . formatter
193
- . begin_array( & mut self . writer)
194
- . map_err( Error :: io) ) ;
195
- let mut first = true ;
196
- for byte in value {
197
- tri ! ( self
198
- . formatter
199
- . begin_array_value( & mut self . writer, first)
200
- . map_err( Error :: io) ) ;
201
- tri ! ( self
202
- . formatter
203
- . write_u8( & mut self . writer, * byte)
204
- . map_err( Error :: io) ) ;
205
- tri ! ( self
206
- . formatter
207
- . end_array_value( & mut self . writer)
208
- . map_err( Error :: io) ) ;
209
- first = false ;
210
- }
211
192
self . formatter
212
- . end_array ( & mut self . writer )
193
+ . write_byte_array ( & mut self . writer , value )
213
194
. map_err ( Error :: io)
214
195
}
215
196
@@ -1786,6 +1767,24 @@ pub trait Formatter {
1786
1767
writer. write_all ( s)
1787
1768
}
1788
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
+
1789
1788
/// Called before every array. Writes a `[` to the specified
1790
1789
/// writer.
1791
1790
#[ inline]
0 commit comments