about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFZs <39064892+fzs111@users.noreply.github.com>2023-09-22 19:33:33 +0200
committerFZs <zsombor0305fzs@gmail.com>2023-09-23 17:28:43 +0200
commit0f248d8ea9403850cd3d80b370fcc9b6793f17b1 (patch)
treec4def7d03de4ebff161c75a8688cef6451e4e408
parent959b2c703d45f06962da3afa086bdda70d42efcf (diff)
downloadrust-0f248d8ea9403850cd3d80b370fcc9b6793f17b1.tar.gz
rust-0f248d8ea9403850cd3d80b370fcc9b6793f17b1.zip
Clarify example in `Pin::new_unchecked` docs
-rw-r--r--library/core/src/pin.rs5
1 files changed, 4 insertions, 1 deletions
diff --git a/library/core/src/pin.rs b/library/core/src/pin.rs
index 6b319b4355c..94c682b615a 100644
--- a/library/core/src/pin.rs
+++ b/library/core/src/pin.rs
@@ -572,7 +572,10 @@ impl<P: Deref> Pin<P> {
     ///     // though we have previously pinned it! We have violated the pinning API contract.
     /// }
     /// ```
-    /// A value, once pinned, must remain pinned forever (unless its type implements `Unpin`).
+    /// A value, once pinned, must remain pinned until it is dropped (unless its type implements
+    /// `Unpin`). Because `Pin<&mut T>` does not own the value, dropping the `Pin` will not drop
+    /// the value and will not end the pinning contract. So moving the value after dropping the
+    /// `Pin<&mut T>` is still a violation of the API contract.
     ///
     /// Similarly, calling `Pin::new_unchecked` on an `Rc<T>` is unsafe because there could be
     /// aliases to the same data that are not subject to the pinning restrictions: