Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::sync::Arc;
- use std::sync::RwLock;
- use std::os::raw::c_void;
- struct Counter {
- val: u32,
- }
- impl Counter {
- fn inc(&mut self, n: &mut N) {
- self.val += n.val;
- n.val += 1;
- }
- }
- struct N {
- val: u32,
- }
- struct X {
- n: N,
- ctr: Counter,
- }
- fn main() {}
- fn f(x_ptr: *mut c_void) {
- let x_ref = unsafe { &mut *(x_ptr as *mut Arc<RwLock<X>>) };
- let mut x_writer = x_ref.write().unwrap();
- x_writer.ctr.inc(&mut x_writer.n);
- }
Add Comment
Please, Sign In to add comment