Skip to content

Commit 0f248d8

Browse files
committed
Clarify example in Pin::new_unchecked docs
1 parent 959b2c7 commit 0f248d8

File tree

1 file changed

+4
-1
lines changed

1 file changed

+4
-1
lines changed

library/core/src/pin.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -572,7 +572,10 @@ impl<P: Deref> Pin<P> {
572572
/// // though we have previously pinned it! We have violated the pinning API contract.
573573
/// }
574574
/// ```
575-
/// A value, once pinned, must remain pinned forever (unless its type implements `Unpin`).
575+
/// A value, once pinned, must remain pinned until it is dropped (unless its type implements
576+
/// `Unpin`). Because `Pin<&mut T>` does not own the value, dropping the `Pin` will not drop
577+
/// the value and will not end the pinning contract. So moving the value after dropping the
578+
/// `Pin<&mut T>` is still a violation of the API contract.
576579
///
577580
/// Similarly, calling `Pin::new_unchecked` on an `Rc<T>` is unsafe because there could be
578581
/// aliases to the same data that are not subject to the pinning restrictions:

0 commit comments

Comments
 (0)