Change Format::format to take Formatter argument by value#305
Merged
Change Format::format to take Formatter argument by value#305
Conversation
This changes the method signature of the `Format::format` trait function to take the `Formatter` instance over the previous `&mut Formatter` argument. The previous `Formatter` is renamed to `InternalFormatter`, a new type `Formatter` holds a single `inner` field to keep a mutable reference to the `InternalFormatter`. * update all implementations of `format` Co-authored-by: japaric <jorge.aparicio@ferrous-systems.com> Co-authored-by: BriocheBerlin <brigitte.markmann@asquera.de>
* change `#[derive(Format)]` to use `defmt::Formatter` instead of mutable ref * delegate calls to InternalFormatter in macro * change type in global logger to use InternalFormatter instead of Formatter * fix compilation of defmt in test mode **Note** there are still some compilation errors Co-authored-by: japaric <jorge.aparicio@ferrous-systems.com> Co-authored-by: BriocheBerlin <brigitte.markmann@asquera.de>
Fixes impl formatter; moves from_raw from Formatter to InternalFormatter, depending on use of unstable-test feature. Fixes compile errors in test/encode.rs file.
f405fff to
859b78c
Compare
Member
this test ( |
Member
|
Some follow-up work to do here. It doesn't need to be done in this PR but I wanted to jot down some notes somewhere:
|
Member
|
a code snippet needs to be updated in the book Lines 16 to 26 in dd056e6 like with API documentation, we test that the snippets compile to keep them in sync with library changes |
Member
|
bors r+ |
Contributor
|
Build succeeded: |
japaric
added a commit
that referenced
this pull request
Dec 16, 2020
when this feature was added, it was possible to call `write!` more than once from a `Format::format` implementation. that operation corrupted the data stream so a runtime check was added to `write!` to prevent the data corruption by panicking on a double use of `write!` PR #305 makes `write!` consume the `Formatter` value so the above issue is now prevented at compile time. The runtime check is no longer necessary (failure case is unreachable) so we remove it
bors Bot
added a commit
that referenced
this pull request
Dec 16, 2020
310: write! macro: remove runtime check r=jonas-schievink a=japaric when this feature was added, it was possible to call `write!` more than once from a `Format::format` implementation. that operation corrupted the data stream so a runtime check was added to `write!` to prevent the data corruption by panicking on a double use of `write!` PR #305 makes `write!` consume the `Formatter` value so the above issue is now prevented at compile time. The runtime check is no longer necessary (failure case is unreachable) so we remove it Co-authored-by: Jorge Aparicio <jorge.aparicio@ferrous-systems.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #277