diff --git a/library/std/src/sync/once_lock.rs b/library/std/src/sync/once_lock.rs index c75a974b13522..de80164ed4f85 100644 --- a/library/std/src/sync/once_lock.rs +++ b/library/std/src/sync/once_lock.rs @@ -626,14 +626,7 @@ impl fmt::Debug for OnceLock { impl Clone for OnceLock { #[inline] fn clone(&self) -> OnceLock { - let cell = Self::new(); - if let Some(value) = self.get() { - match cell.set(value.clone()) { - Ok(()) => (), - Err(_) => unreachable!(), - } - } - cell + self.get().cloned().map_or_default(Self::from) } }