diff options
| author | Elias Holzmann <9659253+EliasHolzmann@users.noreply.github.com> | 2022-04-30 02:39:59 +0200 |
|---|---|---|
| committer | Elias Holzmann <9659253+EliasHolzmann@users.noreply.github.com> | 2022-05-01 15:27:41 +0200 |
| commit | 79d9afda137cfeb30cefdce397851b8e20db4ae1 (patch) | |
| tree | 59a3664f90df0a0db2b0319483db7c0656c83dd0 | |
| parent | afd80a21b0fd2fb378e01a49b95d9a7d61536ca6 (diff) | |
| download | rust-79d9afda137cfeb30cefdce397851b8e20db4ae1.tar.gz rust-79d9afda137cfeb30cefdce397851b8e20db4ae1.zip | |
std::fmt: Fix the grammar documentation
According to the grammar documented, the format specifier `{: }` should not be
legal because of the whitespace it contains. However, in reality, this is
perfectly fine because the actual implementation allows spaces before the
closing brace. Fixes #71088.
Also, the exact meaning of most of the terminal symbols was not specified, for
example the meaning of `identifier`.
| -rw-r--r-- | library/alloc/src/fmt.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/library/alloc/src/fmt.rs b/library/alloc/src/fmt.rs index 361e821dd37..7b12f6e86c1 100644 --- a/library/alloc/src/fmt.rs +++ b/library/alloc/src/fmt.rs @@ -310,7 +310,7 @@ //! ```text //! format_string := text [ maybe_format text ] * //! maybe_format := '{' '{' | '}' '}' | format -//! format := '{' [ argument ] [ ':' format_spec ] '}' +//! format := '{' [ argument ] [ ':' format_spec ] [ ws ] * '}' //! argument := integer | identifier //! //! format_spec := [[fill]align][sign]['#']['0'][width]['.' precision]type @@ -323,7 +323,12 @@ //! count := parameter | integer //! parameter := argument '$' //! ``` -//! In the above grammar, `text` must not contain any `'{'` or `'}'` characters. +//! In the above grammar, +//! - `text` must not contain any `'{'` or `'}'` characters, +//! - `ws` is any character for which [`char::is_whitespace`] returns `true`, has no semantic +//! meaning and is completely optional, +//! - `integer` is a decimal integer that may contain leading zeroes and +//! - `identifier` is an `IDENTIFIER_OR_KEYWORD` (not an `IDENTIFIER`) as defined by the [Rust language reference](https://doc.rust-lang.org/reference/identifiers.html). //! //! # Formatting traits //! |
