Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #[repr(C)]
- #[derive(Debug)]
- struct PairFoo {
- fst: Foo,
- snd: Foo,
- }
- #[derive(Debug)]
- struct Foo(u64);
- fn reinterstruct(box_pair: Box<PairFoo>) -> Vec<Foo> {
- let ref_pair: &mut PairFoo = Box::leak(box_pair);
- let ptr_foo: *mut Foo = ref_pair as *mut PairFoo as *mut Foo;
- unsafe {
- Vec::from_raw_parts(ptr_foo, 2, 2)
- }
- }
- fn main() {
- let pair_foo = Box::new(PairFoo {
- fst: Foo(42),
- snd: Foo(1337),
- });
- println!("pair_foo = {:?}", pair_foo);
- for (n, foo) in reinterstruct(pair_foo).into_iter().enumerate() {
- println!("foo #{} = {:?}", n, foo);
- }
- }
Add Comment
Please, Sign In to add comment