Guest User

Untitled

a guest
Aug 27th, 2016
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.49 KB | None | 0 0
  1. use std::mem;
  2.  
  3. #[derive(Eq, PartialEq)]
  4. #[repr(packed)]
  5. struct Bob {
  6. id: u32,
  7. age: u32,
  8. }
  9.  
  10. unsafe fn get_type<'a, T: Sized>(p: *const u8) -> &'a T {
  11. mem::transmute(p)
  12. }
  13.  
  14. #[test]
  15. fn it_works() {
  16. let bob = Bob {
  17. id: 22,
  18. age: 445,
  19. };
  20. let bob2: &Bob = unsafe {
  21. let ptr: *const u8 = mem::transmute(&bob);
  22. get_type(ptr)
  23. };
  24. assert_eq!(&bob, bob2);
  25. }
  26.  
  27. unsafe fn get_type2<'a, T: ?Sized>(p: *const u8) -> &'a T {
  28. mem::transmute(p)
  29. }
Add Comment
Please, Sign In to add comment