-
-
Notifications
You must be signed in to change notification settings - Fork 85
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
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
https://github.com/knurling-rs/defmt/pull/305/checks?check_run_id=1558757983#step:6:117
this test ( |
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:
|
https://github.com/knurling-rs/defmt/pull/305/checks?check_run_id=1558757817#step:6:147 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 |
bors r+ |
Build succeeded: |
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
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>
Closes #277