Skip to content

Commit 6c52903

Browse files
committed
1 parent 26f0cd5 commit 6c52903

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

src/libcore/fmt/mod.rs

+43
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,8 @@ impl<'a> Display for Arguments<'a> {
273273
///
274274
/// Generally speaking, you should just `derive` a `Debug` implementation.
275275
///
276+
/// When used with the alternate format specifier `#?`, the output is pretty-printed.
277+
///
276278
/// For more information on formatters, see [the module-level documentation][module].
277279
///
278280
/// [module]: ../index.html
@@ -314,13 +316,42 @@ impl<'a> Display for Arguments<'a> {
314316
/// println!("The origin is: {:?}", origin);
315317
/// ```
316318
///
319+
/// This outputs:
320+
///
321+
/// ```text
322+
/// The origin is: Point { x: 0, y: 0 }
323+
/// ```
324+
///
317325
/// There are a number of `debug_*` methods on `Formatter` to help you with manual
318326
/// implementations, such as [`debug_struct`][debug_struct].
319327
///
320328
/// `Debug` implementations using either `derive` or the debug builder API
321329
/// on `Formatter` support pretty printing using the alternate flag: `{:#?}`.
322330
///
323331
/// [debug_struct]: ../std/fmt/struct.Formatter.html#method.debug_struct
332+
///
333+
/// Pretty printing with `#?`:
334+
///
335+
/// ```
336+
/// #[derive(Debug)]
337+
/// struct Point {
338+
/// x: i32,
339+
/// y: i32,
340+
/// }
341+
///
342+
/// let origin = Point { x: 0, y: 0 };
343+
///
344+
/// println!("The origin is: {:#?}", origin);
345+
/// ```
346+
///
347+
/// This outputs:
348+
///
349+
/// ```text
350+
/// The origin is: Point {
351+
/// x: 0,
352+
/// y: 0
353+
/// }
354+
/// ```
324355
#[stable(feature = "rust1", since = "1.0.0")]
325356
#[rustc_on_unimplemented = "`{Self}` cannot be formatted using `:?`; if it is \
326357
defined in your crate, add `#[derive(Debug)]` or \
@@ -379,6 +410,8 @@ pub trait Display {
379410
///
380411
/// The `Octal` trait should format its output as a number in base-8.
381412
///
413+
/// The alternate flag, `#`, adds a `0o` in front of the output.
414+
///
382415
/// For more information on formatters, see [the module-level documentation][module].
383416
///
384417
/// [module]: ../index.html
@@ -391,6 +424,7 @@ pub trait Display {
391424
/// let x = 42; // 42 is '52' in octal
392425
///
393426
/// assert_eq!(format!("{:o}", x), "52");
427+
/// assert_eq!(format!("{:#o}", x), "0o52");
394428
/// ```
395429
///
396430
/// Implementing `Octal` on a type:
@@ -423,6 +457,8 @@ pub trait Octal {
423457
///
424458
/// The `Binary` trait should format its output as a number in binary.
425459
///
460+
/// The alternate flag, `#`, adds a `0b` in front of the output.
461+
///
426462
/// For more information on formatters, see [the module-level documentation][module].
427463
///
428464
/// [module]: ../index.html
@@ -435,6 +471,7 @@ pub trait Octal {
435471
/// let x = 42; // 42 is '101010' in binary
436472
///
437473
/// assert_eq!(format!("{:b}", x), "101010");
474+
/// assert_eq!(format!("{:#b}", x), "0b101010");
438475
/// ```
439476
///
440477
/// Implementing `Binary` on a type:
@@ -468,6 +505,8 @@ pub trait Binary {
468505
/// The `LowerHex` trait should format its output as a number in hexidecimal, with `a` through `f`
469506
/// in lower case.
470507
///
508+
/// The alternate flag, `#`, adds a `0x` in front of the output.
509+
///
471510
/// For more information on formatters, see [the module-level documentation][module].
472511
///
473512
/// [module]: ../index.html
@@ -480,6 +519,7 @@ pub trait Binary {
480519
/// let x = 42; // 42 is '2a' in hex
481520
///
482521
/// assert_eq!(format!("{:x}", x), "2a");
522+
/// assert_eq!(format!("{:#x}", x), "0x2a");
483523
/// ```
484524
///
485525
/// Implementing `LowerHex` on a type:
@@ -513,6 +553,8 @@ pub trait LowerHex {
513553
/// The `UpperHex` trait should format its output as a number in hexidecimal, with `A` through `F`
514554
/// in upper case.
515555
///
556+
/// The alternate flag, `#`, adds a `0x` in front of the output.
557+
///
516558
/// For more information on formatters, see [the module-level documentation][module].
517559
///
518560
/// [module]: ../index.html
@@ -525,6 +567,7 @@ pub trait LowerHex {
525567
/// let x = 42; // 42 is '2A' in hex
526568
///
527569
/// assert_eq!(format!("{:X}", x), "2A");
570+
/// assert_eq!(format!("{:#X}", x), "0x2A");
528571
/// ```
529572
///
530573
/// Implementing `UpperHex` on a type:

0 commit comments

Comments
 (0)