std::fmt: Fixed documentation for specifying precision via .*

The documentation stated that in case of the syntax `{<arg>:<spec>.*}`, "the
`<arg>` part refers to the value to print, and the precision must come in the
input preceding `<arg>`". This is not correct: the <arg> part does indeed refer
to the value to print, but the precision does not come in the input preciding
arg, but in the next implicit input (as if specified with {}).

Fixes #96413.
This commit is contained in:
Elias Holzmann 2022-04-30 02:38:22 +02:00
parent a707f40107
commit 1288883932

View File

@ -221,10 +221,12 @@
//! //!
//! 3. An asterisk `.*`: //! 3. An asterisk `.*`:
//! //!
//! `.*` means that this `{...}` is associated with *two* format inputs rather than one: the //! `.*` means that this `{...}` is associated with *two* format inputs rather than one:
//! first input holds the `usize` precision, and the second holds the value to print. Note that //! - If a format string in the fashion of `{:<spec>.*}` is used, then the first input holds
//! in this case, if one uses the format string `{<arg>:<spec>.*}`, then the `<arg>` part refers //! the `usize` precision, and the second holds the value to print.
//! to the *value* to print, and the `precision` must come in the input preceding `<arg>`. //! - If a format string in the fashion of `{<arg>:<spec>.*}` is used, then the `<arg>` part
//! refers to the value to print, and the `precision` is taken like it was specified with an
//! omitted positional parameter (`{}` instead of `{<arg>:}`).
//! //!
//! For example, the following calls all print the same thing `Hello x is 0.01000`: //! For example, the following calls all print the same thing `Hello x is 0.01000`:
//! //!
@ -242,8 +244,12 @@
//! // specified in first of next two args (5)} //! // specified in first of next two args (5)}
//! println!("Hello {} is {:.*}", "x", 5, 0.01); //! println!("Hello {} is {:.*}", "x", 5, 0.01);
//! //!
//! // Hello {arg 1 ("x")} is {arg 2 (0.01) with precision
//! // specified in next arg (5)}
//! println!("Hello {1} is {2:.*}", 5, "x", 0.01);
//!
//! // Hello {next arg ("x")} is {arg 2 (0.01) with precision //! // Hello {next arg ("x")} is {arg 2 (0.01) with precision
//! // specified in its predecessor (5)} //! // specified in next arg (5)}
//! println!("Hello {} is {2:.*}", "x", 5, 0.01); //! println!("Hello {} is {2:.*}", "x", 5, 0.01);
//! //!
//! // Hello {next arg ("x")} is {arg "number" (0.01) with precision specified //! // Hello {next arg ("x")} is {arg "number" (0.01) with precision specified