std: Enforce Unicode in fmt::Writer #20377
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit is an implementation of RFC 526 which is a change to alter
the definition of the old
fmt::FormatWriter
. The new trait, renamed toWriter
, now only exposes one methodwrite_str
in order to guarantee that allimplementations of the formatting traits can only produce valid Unicode.
One of the primary improvements of this patch is the performance of the
.to_string()
method by avoiding an almost-always redundant UTF-8 check. Thisis a breaking change due to the renaming of the trait as well as the loss of the
write
method, but migration paths should be relatively easy:write
should move towrite_str
. If truly binary data wasbeing written in an implementation of
Show
, then it will need to use adifferent trait or an altogether different code path.
write!
should continue to work as-is with no modifications.Show
where implementations just delegate to another shouldcontinue to work as-is.
[breaking-change]
Closes #20352