Struct msp430_atomic::AtomicBool
source · [−]pub struct AtomicBool { /* private fields */ }Expand description
A boolean type which can be safely shared between threads.
This type has the same in-memory representation as a bool.
Implementations
Creates a new AtomicBool.
Examples
use msp430_atomic::AtomicBool;
let atomic_true = AtomicBool::new(true);
let atomic_false = AtomicBool::new(false);Returns a mutable reference to the underlying bool.
This is safe because the mutable reference guarantees that no other threads are concurrently accessing the atomic data.
Examples
use msp430_atomic::AtomicBool;
let mut some_bool = AtomicBool::new(true);
assert_eq!(*some_bool.get_mut(), true);
*some_bool.get_mut() = false;
assert_eq!(some_bool.load(), false);Consumes the atomic and returns the contained value.
This is safe because passing self by value guarantees that no other threads are
concurrently accessing the atomic data.
Examples
use msp430_atomic::AtomicBool;
let some_bool = AtomicBool::new(true);
assert_eq!(some_bool.into_inner(), true);Loads a value from the bool.
Examples
use msp430_atomic::AtomicBool;
let some_bool = AtomicBool::new(true);
assert_eq!(some_bool.load(), true);Stores a value into the bool.
Examples
use msp430_atomic::AtomicBool;
let some_bool = AtomicBool::new(true);
some_bool.store(false);
assert_eq!(some_bool.load(), false);Logical “and” with a boolean value.
Performs a logical “and” operation on the current value and the argument val, and sets
the new value to the result.
Examples
use msp430_atomic::AtomicBool;
let foo = AtomicBool::new(true);
foo.and(false);
assert_eq!(foo.load(), false);
let foo = AtomicBool::new(true);
foo.and(true);
assert_eq!(foo.load(), true);
let foo = AtomicBool::new(false);
foo.and(false);
assert_eq!(foo.load(), false);Logical “nand” with a boolean value.
Performs a logical “nand” operation on the current value and the argument val, and sets
the new value to the result.
Examples
use msp430_atomic::AtomicBool;
let foo = AtomicBool::new(true);
foo.nand(false);
assert_eq!(foo.load(), true);
let foo = AtomicBool::new(true);
foo.nand(true);
assert_eq!(foo.load() as usize, 0);
assert_eq!(foo.load(), false);
let foo = AtomicBool::new(false);
foo.nand(false);
assert_eq!(foo.load(), true);Logical “or” with a boolean value.
Performs a logical “or” operation on the current value and the argument val, and sets the
new value to the result.
Examples
use msp430_atomic::AtomicBool;
let foo = AtomicBool::new(true);
foo.or(false);
assert_eq!(foo.load(), true);
let foo = AtomicBool::new(true);
foo.or(true);
assert_eq!(foo.load(), true);
let foo = AtomicBool::new(false);
foo.or(false);
assert_eq!(foo.load(), false);Logical “xor” with a boolean value.
Performs a logical “xor” operation on the current value and the argument val, and sets
the new value to the result.
Examples
use msp430_atomic::AtomicBool;
let foo = AtomicBool::new(true);
foo.xor(false);
assert_eq!(foo.load(), true);
let foo = AtomicBool::new(true);
foo.xor(true);
assert_eq!(foo.load(), false);
let foo = AtomicBool::new(false);
foo.xor(false);
assert_eq!(foo.load(), false);