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);