Struct msp430_atomic::AtomicBool
source · #[repr(C, align(1))]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§
source§impl AtomicBool
impl AtomicBool
sourcepub const fn new(v: bool) -> AtomicBool
pub const fn new(v: bool) -> AtomicBool
Creates a new AtomicBool
.
Examples
use msp430_atomic::AtomicBool;
let atomic_true = AtomicBool::new(true);
let atomic_false = AtomicBool::new(false);
sourcepub fn get_mut(&mut self) -> &mut bool
pub fn get_mut(&mut self) -> &mut bool
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);
sourcepub fn into_inner(self) -> bool
pub fn into_inner(self) -> bool
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);
sourcepub fn load(&self) -> bool
pub fn load(&self) -> bool
Loads a value from the bool.
Examples
use msp430_atomic::AtomicBool;
let some_bool = AtomicBool::new(true);
assert_eq!(some_bool.load(), true);
sourcepub fn store(&self, val: bool)
pub fn store(&self, val: bool)
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);
sourcepub fn and(&self, val: bool)
pub fn and(&self, val: bool)
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);
sourcepub fn nand(&self, val: bool)
pub fn nand(&self, val: bool)
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);
sourcepub fn or(&self, val: bool)
pub fn or(&self, val: bool)
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);
sourcepub fn xor(&self, val: bool)
pub fn xor(&self, val: bool)
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);