Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // fn run_mut<F>(mut f: F)
- // where
- // F: FnMut(u32) -> (),
- // {
- // f(1);
- // }
- // fn foo(x: u32) -> u32 {
- // x + 1
- // }
- // fn main() {
- // let bar: fn(u32) -> u32 = foo; // function pointer
- // let y: u32 = bar(1); // function call
- // assert!{y == 2};
- // let baz = |x| x + y; // closure type
- // let z = baz(y); // closure invocation
- // assert!(z == 4);
- // let mut b: u32 = 0; // mutable variable
- // let bb = &mut b; // mutable reference
- // let c1 = |x: u32| { // closure parameter
- // move |y| { // x, bb into closure
- // *bb += x + y;
- // }
- // };
- // run_mut(c1(3));
- // assert!(b == 4);
- // }
- use core::cell::UnsafeCell;
- struct Descriptor<T> {
- size : u8,
- rest: T
- }
- struct BUF(UnsafeCell<[u8; 32]>);
- unsafe impl Sync for BUF {}
- static BUFFER:BUF = BUF(unsafe { UnsafeCell::new([0; 32]) });
- const A:Descriptor<Descriptor<&'static mut BUF>> = Descriptor {
- size : std::mem::size_of::<Descriptor<Descriptor<&'static mut BUF>>>() as u8,
- rest : Descriptor {
- size : std::mem::size_of::<Descriptor<&'static mut BUF>>() as u8,
- rest : &mut BUFFER
- },
- };
- // fn main() {
- // println!("{}", A.size);
- // }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement