-
Notifications
You must be signed in to change notification settings - Fork 13k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
std::fmt: Various fixes and improvements to documentation #96568
Conversation
Hey! It looks like you've submitted a new PR for the library teams! If this PR contains changes to any Examples of
|
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @joshtriplett (or someone else) soon. Please see the contribution instructions for more information. |
Posted one minor nit; LGTM otherwise. |
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 rust-lang#96413.
…ecision The examples for specifying the precision have comments explaining which argument the specifier is referring to. However, for implicit positional arguments, the examples simply talk about "next arg". To make it easier for readers to follow the comments, "next arg" was supplemented with the actual resulting argument index.
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 rust-lang#71088. Also, the exact meaning of most of the terminal symbols was not specified, for example the meaning of `identifier`.
Formatter::buf is not a public field and therefore isn't very helpful in user- facing documentation. Also, the other public fields of Formatter were made private during stabilization of std::fmt (4af3494) and can now only be read via accessor methods.
Two improvements: 1. write! can not only receive a `io::Write`, but also a `fmt::Write` as first argument. 2. The description texts now contain links to the actual macros for easier navigation.
c7efc69
to
f3b86c3
Compare
@bors r+ rollup |
📌 Commit f3b86c3 has been approved by |
Rollup of 7 pull requests Successful merges: - rust-lang#94126 (Classify BinaryHeap & LinkedList unit tests as such) - rust-lang#96222 (Clarify docs for `from_raw_parts` on `Vec` and `String`) - rust-lang#96499 (Make it possible to write doctests for bootstrap) - rust-lang#96567 (Fix docs for u32 and i32 logs func) - rust-lang#96568 (std::fmt: Various fixes and improvements to documentation) - rust-lang#96571 (Add a bathroom stall to weird expressions test) - rust-lang#96610 (Update browser-ui-test version to 0.9.0) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This PR contains the following changes:
Added argument index comments to examples for specifying precision
The examples for specifying the precision have comments explaining which
argument the specifier is referring to. However, for implicit positional
arguments, the examples simply refer to "next arg". To simplify following the
comments, "next arg" was supplemented with the actual resulting argument index.
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 theinput preceding
<arg>
". This is not correct: the part does indeed referto 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 std::fmt: Precision via asterisk does not fit documentation when using named or explicit positional arguments #96413.
Fix the grammar documentation
According to the grammar documented, the format specifier
{: }
should not belegal because of the whitespace it contains. However, in reality, this is
perfectly fine because the actual implementation allows spaces before the
closing brace. Fixes Format string parser does not fail on invalid input #71088.
Also, the exact meaning of most of the terminal symbols was not specified, for
example the meaning of
identifier
.Removed reference to Formatter::buf and other private fields
Formatter::buf is not a public field and therefore isn't very helpful in user-
facing documentation. Also, the other public fields of Formatter were removed
during stabilization of std::fmt (4af3494) and can only be accessed via
getters.
Improved list of formatting macros
Two improvements:
io::Write
, but also afmt::Write
as first argument.navigation.