summaryrefslogtreecommitdiffstats
path: root/library/core/src/pin.rs
diff options
context:
space:
mode:
Diffstat (limited to 'library/core/src/pin.rs')
-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 6b319b435..94c682b61 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: