The following line that's missing an alignment specifier between the (intended) fill character _ and width+precision 1.4:
println!("{foo:_1.4}", foo = 3.14);
makes the compiler think we're trying to access a tuple field and helpfully but incorrectly suggests replacing it with
println!("{0}", foo:_1.4, foo = 3.14);
which is, of course, invalid syntax. The same holds for any alphabetic character as well as ..
Current output
error: invalid format string: tuple index access isn't supported
--> src/main.rs:4:16
|
4 | println!("{foo:_1.4}", foo = 3.14);
| ^^^^^^^^ not supported in format string
|
help: consider using a positional formatting argument instead
|
4 | println!("{0}", foo:_1.4, foo = 3.14);
| ~ ++++++++++
Desired output
error: invalid format string: invalid alignment specifier
--> src/main.rs:4:16
|
4 | println!("{foo:_1.4}", foo = 3.14);
| ^ not supported in format string
|
help: if you're trying to use a fill character, it must be followed by one of `<` `>` `^`
|
4 | println!("{foo:_>1.4}", foo = 3.14);
| +
Other cases
Using a non-alphanumeric fill character that's not [._+-] yields a different error message that is not incorrect but is perhaps not very helpful:
error: invalid format string: expected `}`, found `*`
--> src/main.rs:4:20
|
4 | println!("{foo:*10.4}", foo = 3.14);
| - ^ expected `}` in format string
| |
| because of this opening brace
|
= note: if you intended to print `{`, you can escape it using `{{`
Rust Version
rustc 1.85.1 (4eb161250 2025-03-15)
binary: rustc
commit-hash: 4eb161250e340c8f48f66e2b929ef4a5bed7c181
commit-date: 2025-03-15
host: x86_64-apple-darwin
release: 1.85.1
LLVM version: 19.1.7
The following line that's missing an alignment specifier between the (intended) fill character
_and width+precision1.4:makes the compiler think we're trying to access a tuple field and helpfully but incorrectly suggests replacing it with
which is, of course, invalid syntax. The same holds for any alphabetic character as well as
..Current output
Desired output
Other cases
Using a non-alphanumeric fill character that's not
[._+-]yields a different error message that is not incorrect but is perhaps not very helpful:Rust Version