expand Unpin example
This commit is contained in:
parent
d5df8a49d7
commit
9c241aa714
1 changed files with 5 additions and 3 deletions
|
@ -618,14 +618,16 @@ unsafe impl<T: ?Sized> Freeze for &mut T {}
|
|||
/// So this, for example, can only be done on types implementing `Unpin`:
|
||||
///
|
||||
/// ```rust
|
||||
/// use std::mem::replace;
|
||||
/// use std::mem;
|
||||
/// use std::pin::Pin;
|
||||
///
|
||||
/// let mut string = "this".to_string();
|
||||
/// let mut pinned_string = Pin::new(&mut string);
|
||||
///
|
||||
/// // dereferencing the pointer mutably is only possible because String implements Unpin
|
||||
/// replace(&mut *pinned_string, "other".to_string());
|
||||
/// // We need a mutable reference to call `mem::replace`.
|
||||
/// // We can obtain such a reference by (implicitly) invoking `Pin::deref_mut`,
|
||||
/// // but that is only possible because `String` implements `Unpin`.
|
||||
/// mem::replace(&mut *pinned_string, "other".to_string());
|
||||
/// ```
|
||||
///
|
||||
/// This trait is automatically implemented for almost every type.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue