2 use std::sync::atomic::{AtomicPtr, Ordering};
6 let other_ptr = &mut 10;
7 let x = AtomicPtr::new(ptr);
9 // Allowed load ordering modes
10 let _ = x.load(Ordering::Acquire);
11 let _ = x.load(Ordering::SeqCst);
12 let _ = x.load(Ordering::Relaxed);
14 // Disallowed load ordering modes
15 let _ = x.load(Ordering::Release);
16 //~^ ERROR atomic loads cannot have `Release` or `AcqRel` ordering
17 let _ = x.load(Ordering::AcqRel);
18 //~^ ERROR atomic loads cannot have `Release` or `AcqRel` ordering
20 // Allowed store ordering modes
21 x.store(other_ptr, Ordering::Release);
22 x.store(other_ptr, Ordering::SeqCst);
23 x.store(other_ptr, Ordering::Relaxed);
25 // Disallowed store ordering modes
26 x.store(other_ptr, Ordering::Acquire);
27 //~^ ERROR atomic stores cannot have `Acquire` or `AcqRel` ordering
28 x.store(other_ptr, Ordering::AcqRel);
29 //~^ ERROR atomic stores cannot have `Acquire` or `AcqRel` ordering