diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2023-07-31 22:51:12 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-31 22:51:12 +0200 |
| commit | bcfa49f162de64209cc9ed64cfcd36942e67b02a (patch) | |
| tree | e6b553b0766ebfc8ea3bd8f24ed36a2591761544 /library/std/src/sync/once_lock.rs | |
| parent | b3df56a65f9424a7f4af101091582f49cfc29286 (diff) | |
| parent | b7e68dfc945c4cf8d1753cc3a8be48a71bb39d5a (diff) | |
| download | rust-bcfa49f162de64209cc9ed64cfcd36942e67b02a.tar.gz rust-bcfa49f162de64209cc9ed64cfcd36942e67b02a.zip | |
Rollup merge of #109318 - joboet:better_fmt_placeholder, r=dtolnay
Make `Debug` representations of `[Lazy, Once]*[Cell, Lock]` consistent with `Mutex` and `RwLock` `Mutex` prints `<locked>` as a field value when its inner value cannot be accessed, but the lazy types print a fixed string like "`OnceCell(Uninit)`". This could cause confusion if the inner type is a unit type named `Uninit` and does not respect the pretty-printing flag. With this change, the format message is now "`OnceCell(<uninit>)`", consistent with `Mutex`.
Diffstat (limited to 'library/std/src/sync/once_lock.rs')
| -rw-r--r-- | library/std/src/sync/once_lock.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/library/std/src/sync/once_lock.rs b/library/std/src/sync/once_lock.rs index e83bc35ee98..e2b7b893cb5 100644 --- a/library/std/src/sync/once_lock.rs +++ b/library/std/src/sync/once_lock.rs @@ -365,10 +365,12 @@ impl<T> Default for OnceLock<T> { #[stable(feature = "once_cell", since = "1.70.0")] impl<T: fmt::Debug> fmt::Debug for OnceLock<T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + let mut d = f.debug_tuple("OnceLock"); match self.get() { - Some(v) => f.debug_tuple("Once").field(v).finish(), - None => f.write_str("Once(Uninit)"), - } + Some(v) => d.field(v), + None => d.field(&format_args!("<uninit>")), + }; + d.finish() } } |
