@@ -274,6 +274,8 @@ impl<T> MaybeUninit<T> {
274
274
/// use std::mem::MaybeUninit;
275
275
///
276
276
/// let v: MaybeUninit<Vec<u8>> = MaybeUninit::new(vec![42]);
277
+ /// # // Prevent leaks for Miri
278
+ /// # unsafe { let _ = MaybeUninit::assume_init(v); }
277
279
/// ```
278
280
///
279
281
/// [`assume_init`]: MaybeUninit::assume_init
@@ -506,6 +508,8 @@ impl<T> MaybeUninit<T> {
506
508
/// // Create a reference into the `MaybeUninit<T>`. This is okay because we initialized it.
507
509
/// let x_vec = unsafe { &*x.as_ptr() };
508
510
/// assert_eq!(x_vec.len(), 3);
511
+ /// # // Prevent leaks for Miri
512
+ /// # unsafe { MaybeUninit::assume_init_drop(&mut x); }
509
513
/// ```
510
514
///
511
515
/// *Incorrect* usage of this method:
@@ -545,6 +549,8 @@ impl<T> MaybeUninit<T> {
545
549
/// let x_vec = unsafe { &mut *x.as_mut_ptr() };
546
550
/// x_vec.push(3);
547
551
/// assert_eq!(x_vec.len(), 4);
552
+ /// # // Prevent leaks for Miri
553
+ /// # unsafe { MaybeUninit::assume_init_drop(&mut x); }
548
554
/// ```
549
555
///
550
556
/// *Incorrect* usage of this method:
@@ -746,6 +752,8 @@ impl<T> MaybeUninit<T> {
746
752
/// use std::mem::MaybeUninit;
747
753
///
748
754
/// let mut x = MaybeUninit::<Vec<u32>>::uninit();
755
+ /// # let mut x_mu = x;
756
+ /// # let mut x = &mut x_mu;
749
757
/// // Initialize `x`:
750
758
/// x.write(vec![1, 2, 3]);
751
759
/// // Now that our `MaybeUninit<_>` is known to be initialized, it is okay to
@@ -755,6 +763,8 @@ impl<T> MaybeUninit<T> {
755
763
/// x.assume_init_ref()
756
764
/// };
757
765
/// assert_eq!(x, &vec![1, 2, 3]);
766
+ /// # // Prevent leaks for Miri
767
+ /// # unsafe { MaybeUninit::assume_init_drop(&mut x_mu); }
758
768
/// ```
759
769
///
760
770
/// ### *Incorrect* usages of this method:
@@ -1088,6 +1098,8 @@ impl<T> MaybeUninit<T> {
1088
1098
/// let init = MaybeUninit::clone_from_slice(&mut dst, &src);
1089
1099
///
1090
1100
/// assert_eq!(init, src);
1101
+ /// # // Prevent leaks for Miri
1102
+ /// # unsafe { std::ptr::drop_in_place(init); }
1091
1103
/// ```
1092
1104
///
1093
1105
/// ```
0 commit comments