Guest User

Untitled

a guest
Nov 18th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.60 KB | None | 0 0
  1. #[repr(C)]
  2. #[derive(Debug)]
  3. struct PairFoo {
  4. fst: Foo,
  5. snd: Foo,
  6. }
  7.  
  8. #[derive(Debug)]
  9. struct Foo(u64);
  10. fn reinterstruct(box_pair: Box<PairFoo>) -> Vec<Foo> {
  11. let ref_pair: &mut PairFoo = Box::leak(box_pair);
  12. let ptr_foo: *mut Foo = ref_pair as *mut PairFoo as *mut Foo;
  13. unsafe {
  14. Vec::from_raw_parts(ptr_foo, 2, 2)
  15. }
  16. }
  17.  
  18. fn main() {
  19. let pair_foo = Box::new(PairFoo {
  20. fst: Foo(42),
  21. snd: Foo(1337),
  22. });
  23. println!("pair_foo = {:?}", pair_foo);
  24. for (n, foo) in reinterstruct(pair_foo).into_iter().enumerate() {
  25. println!("foo #{} = {:?}", n, foo);
  26. }
  27. }
Add Comment
Please, Sign In to add comment