diff options
| author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2021-08-08 22:30:37 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-08 22:30:37 +0000 |
| commit | 5664a2b0b31403024ce5ab927760d630d5ddc9a4 (patch) | |
| tree | c460fe4d703963cc82b888704532ea2022ec96cb /docs/dev/debugging.md | |
| parent | 044d99e162bd8c1780b5288e0e5cf13fc0bdac51 (diff) | |
| parent | 59cdb51ef3865582588f2735dc5479e9c205ddb6 (diff) | |
Merge #9814
9814: Generate default impl when converting `#[derive(Debug)]` to manual impl r=yoshuawuyts a=yoshuawuyts
This patch makes it so when you convert `#[derive(Debug)]` to a manual impl, a default body is provided that's equivalent to the original output of `#[derive(Debug)]`. This should make it drastically easier to write custom `Debug` impls, especially when all you want to do is quickly omit a single field which is `!Debug`.
This is implemented for enums, record structs, tuple structs, empty structs - and it sets us up to implement variations on this in the future for other traits (like `PartialEq` and `Hash`).
Thanks!
## Codegen diff
This is the difference in codegen for record structs with this patch:
```diff
struct Foo {
bar: String,
}
impl fmt::Debug for Foo {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- todo!();
+ f.debug_struct("Foo").field("bar", &self.bar).finish()
}
}
```
Co-authored-by: Irina Shestak <shestak.irina@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts@gmail.com>
Co-authored-by: Yoshua Wuyts <yoshuawuyts+github@gmail.com>
Diffstat (limited to 'docs/dev/debugging.md')
0 files changed, 0 insertions, 0 deletions
