@@ -22,6 +22,25 @@ impl<'a, 'b: 'a> PadAdapter<'a, 'b> {
22
22
on_newline : false ,
23
23
}
24
24
}
25
+
26
+ fn as_formatter ( & mut self ) -> fmt:: Formatter {
27
+ fmt:: Formatter {
28
+ // These only exist in the struct for the `Formatter::run` method,
29
+ // which won’t be used.
30
+ curarg : self . fmt . curarg . clone ( ) ,
31
+ args : self . fmt . args ,
32
+
33
+ // We want to preserve these
34
+ flags : self . fmt . flags ,
35
+ fill : self . fmt . fill ,
36
+ align : self . fmt . align ,
37
+ width : self . fmt . width ,
38
+ precision : self . fmt . precision ,
39
+
40
+ // And change this
41
+ buf : self ,
42
+ }
43
+ }
25
44
}
26
45
27
46
impl < ' a , ' b : ' a > fmt:: Write for PadAdapter < ' a , ' b > {
@@ -112,11 +131,16 @@ impl<'a, 'b: 'a> DebugStruct<'a, 'b> {
112
131
} ;
113
132
114
133
if self . is_pretty ( ) {
134
+ use fmt:: Write ;
115
135
let mut writer = PadAdapter :: new ( self . fmt ) ;
116
- fmt:: write ( & mut writer,
117
- format_args ! ( "{}\n {}: {:#?}" , prefix, name, value) )
136
+ writer. write_str ( prefix) ?;
137
+ writer. write_str ( "\n " ) ?;
138
+ writer. write_str ( name) ?;
139
+ writer. write_str ( ": " ) ?;
140
+ value. fmt ( & mut writer. as_formatter ( ) )
118
141
} else {
119
- write ! ( self . fmt, "{} {}: {:?}" , prefix, name, value)
142
+ write ! ( self . fmt, "{} {}: " , prefix, name) ?;
143
+ value. fmt ( self . fmt )
120
144
}
121
145
} ) ;
122
146
@@ -204,10 +228,15 @@ impl<'a, 'b: 'a> DebugTuple<'a, 'b> {
204
228
} ;
205
229
206
230
if self . is_pretty ( ) {
231
+ use fmt:: Write ;
207
232
let mut writer = PadAdapter :: new ( self . fmt ) ;
208
- fmt:: write ( & mut writer, format_args ! ( "{}\n {:#?}" , prefix, value) )
233
+ writer. write_str ( prefix) ?;
234
+ writer. write_str ( "\n " ) ?;
235
+ value. fmt ( & mut writer. as_formatter ( ) )
209
236
} else {
210
- write ! ( self . fmt, "{}{}{:?}" , prefix, space, value)
237
+ self . fmt . write_str ( prefix) ?;
238
+ self . fmt . write_str ( space) ?;
239
+ value. fmt ( self . fmt )
211
240
}
212
241
} ) ;
213
242
@@ -247,20 +276,19 @@ impl<'a, 'b: 'a> DebugInner<'a, 'b> {
247
276
fn entry ( & mut self , entry : & fmt:: Debug ) {
248
277
self . result = self . result . and_then ( |_| {
249
278
if self . is_pretty ( ) {
279
+ use fmt:: Write ;
250
280
let mut writer = PadAdapter :: new ( self . fmt ) ;
251
- let prefix = if self . has_fields {
252
- ","
281
+ writer . write_str ( if self . has_fields {
282
+ ",\n "
253
283
} else {
254
- ""
255
- } ;
256
- fmt:: write ( & mut writer, format_args ! ( "{} \n {:#?}" , prefix , entry ) )
284
+ "\n "
285
+ } ) ? ;
286
+ entry . fmt ( & mut writer. as_formatter ( ) )
257
287
} else {
258
- let prefix = if self . has_fields {
259
- ", "
260
- } else {
261
- ""
262
- } ;
263
- write ! ( self . fmt, "{}{:?}" , prefix, entry)
288
+ if self . has_fields {
289
+ self . fmt . write_str ( ", " ) ?
290
+ }
291
+ entry. fmt ( self . fmt )
264
292
}
265
293
} ) ;
266
294
@@ -472,21 +500,23 @@ impl<'a, 'b: 'a> DebugMap<'a, 'b> {
472
500
pub fn entry ( & mut self , key : & fmt:: Debug , value : & fmt:: Debug ) -> & mut DebugMap < ' a , ' b > {
473
501
self . result = self . result . and_then ( |_| {
474
502
if self . is_pretty ( ) {
503
+ use fmt:: Write ;
475
504
let mut writer = PadAdapter :: new ( self . fmt ) ;
476
- let prefix = if self . has_fields {
477
- ","
505
+ writer . write_str ( if self . has_fields {
506
+ ",\n "
478
507
} else {
479
- ""
480
- } ;
481
- fmt:: write ( & mut writer,
482
- format_args ! ( "{}\n {:#?}: {:#?}" , prefix, key, value) )
508
+ "\n "
509
+ } ) ?;
510
+ key. fmt ( & mut writer. as_formatter ( ) ) ?;
511
+ writer. write_str ( ": " ) ?;
512
+ value. fmt ( & mut writer. as_formatter ( ) )
483
513
} else {
484
- let prefix = if self . has_fields {
485
- ", "
486
- } else {
487
- ""
488
- } ;
489
- write ! ( self . fmt, "{}{:?}: {:?}" , prefix , key , value )
514
+ if self . has_fields {
515
+ self . fmt . write_str ( ", " ) ?
516
+ }
517
+ key . fmt ( self . fmt ) ? ;
518
+ self . fmt . write_str ( ": " ) ? ;
519
+ value . fmt ( self . fmt )
490
520
}
491
521
} ) ;
492
522
0 commit comments