Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. // fn run_mut<F>(mut f: F)
  2. // where
  3. // F: FnMut(u32) -> (),
  4. // {
  5. // f(1);
  6. // }
  7.  
  8. // fn foo(x: u32) -> u32 {
  9. // x + 1
  10. // }
  11.  
  12. // fn main() {
  13. // let bar: fn(u32) -> u32 = foo; // function pointer
  14. // let y: u32 = bar(1); // function call
  15. // assert!{y == 2};
  16.  
  17. // let baz = |x| x + y; // closure type
  18. // let z = baz(y); // closure invocation
  19. // assert!(z == 4);
  20.  
  21. // let mut b: u32 = 0; // mutable variable
  22.  
  23. // let bb = &mut b; // mutable reference
  24.  
  25. // let c1 = |x: u32| { // closure parameter
  26. // move |y| { // x, bb into closure
  27. // *bb += x + y;
  28. // }
  29. // };
  30.  
  31. // run_mut(c1(3));
  32. // assert!(b == 4);
  33. // }
  34.  
  35. use core::cell::UnsafeCell;
  36.  
  37. struct Descriptor<T> {
  38. size : u8,
  39. rest: T
  40. }
  41.  
  42. struct BUF(UnsafeCell<[u8; 32]>);
  43. unsafe impl Sync for BUF {}
  44.  
  45. static BUFFER:BUF = BUF(unsafe { UnsafeCell::new([0; 32]) });
  46.  
  47. const A:Descriptor<Descriptor<&'static mut BUF>> = Descriptor {
  48. size : std::mem::size_of::<Descriptor<Descriptor<&'static mut BUF>>>() as u8,
  49. rest : Descriptor {
  50. size : std::mem::size_of::<Descriptor<&'static mut BUF>>() as u8,
  51. rest : &mut BUFFER
  52. },
  53. };
  54.  
  55.  
  56. // fn main() {
  57. // println!("{}", A.size);
  58. // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement