16 lines
431 B
Rust
16 lines
431 B
Rust
// This tests that the size of Option<Box<i32>> is the same as *const i32.
|
|
fn option_box_deref() -> i32 {
|
|
let val = Some(Box::new(42));
|
|
unsafe {
|
|
let ptr: *const i32 = std::mem::transmute::<Option<Box<i32>>, *const i32>(val);
|
|
let ret = *ptr;
|
|
// unleak memory
|
|
std::mem::transmute::<*const i32, Option<Box<i32>>>(ptr);
|
|
ret
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
assert_eq!(option_box_deref(), 42);
|
|
}
|