about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--library/std/src/lazy.rs20
1 files changed, 19 insertions, 1 deletions
diff --git a/library/std/src/lazy.rs b/library/std/src/lazy.rs
index fc485f0cd47..d171231b0f1 100644
--- a/library/std/src/lazy.rs
+++ b/library/std/src/lazy.rs
@@ -47,7 +47,25 @@ pub struct SyncOnceCell<T> {
     once: Once,
     // Whether or not the value is initialized is tracked by `state_and_queue`.
     value: UnsafeCell<MaybeUninit<T>>,
-    // Make sure dropck understands we're dropping T in our Drop impl.
+    /// `PhantomData` to make sure dropck understands we're dropping T in our Drop impl.
+    ///
+    /// ```compile_fail,E0597
+    /// #![feature(once_cell)]
+    ///
+    /// use std::lazy::SyncOnceCell;
+    ///
+    /// struct A<'a>(&'a str);
+    ///
+    /// impl<'a> Drop for A<'a> {
+    ///     fn drop(&mut self) {}
+    /// }
+    ///
+    /// let cell = SyncOnceCell::new();
+    /// {
+    ///     let s = String::new();
+    ///     let _ = cell.set(A(&s));
+    /// }
+    /// ```
     _marker: PhantomData<T>,
 }