blob: 9eac279733af902a334f42184e7bb22d520675fa (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
use core::mem::ManuallyDrop;
#[test]
fn smoke() {
#[derive(Clone)]
struct TypeWithDrop;
impl Drop for TypeWithDrop {
fn drop(&mut self) {
unreachable!("Should not get dropped");
}
}
let x = ManuallyDrop::new(TypeWithDrop);
drop(x);
// also test unsizing
let x: Box<ManuallyDrop<[TypeWithDrop]>> =
Box::new(ManuallyDrop::new([TypeWithDrop, TypeWithDrop]));
drop(x);
// test clone and clone_from implementations
let mut x = ManuallyDrop::new(TypeWithDrop);
let y = x.clone();
x.clone_from(&y);
drop(x);
drop(y);
}
|