pub struct FutureBool { /* private fields */ }
Expand description
A bool one can await
the changes.
Implementations§
Source§impl FutureBool
impl FutureBool
Sourcepub fn new(val: bool) -> Self
pub fn new(val: bool) -> Self
Creates a new FutureBool
with some initial value.
Examples found in repository?
examples/ex1.rs (line 11)
10async fn main() {
11 let b: FutureBool = FutureBool::new(false);
12 let mut tasks = Vec::new();
13
14 for x in 0..20 {
15 let clone = b.clone();
16 if x % 2 == 0 {
17 tasks.push(tokio::spawn(async move {
18 clone.wait_true().await;
19 eprintln!("{:2}: Yess", x);
20 }));
21 } else {
22 tasks.push(tokio::spawn(async move {
23 clone.wait_false().await;
24 eprintln!("{:2}: Nope", x);
25 }));
26 }
27 }
28
29 sleep!(2);
30 b.set();
31
32 for task in tasks {
33 let _ = task.await;
34 }
35}
Sourcepub fn set(&self)
pub fn set(&self)
Sets the bool
value to true
.
Examples found in repository?
examples/ex1.rs (line 30)
10async fn main() {
11 let b: FutureBool = FutureBool::new(false);
12 let mut tasks = Vec::new();
13
14 for x in 0..20 {
15 let clone = b.clone();
16 if x % 2 == 0 {
17 tasks.push(tokio::spawn(async move {
18 clone.wait_true().await;
19 eprintln!("{:2}: Yess", x);
20 }));
21 } else {
22 tasks.push(tokio::spawn(async move {
23 clone.wait_false().await;
24 eprintln!("{:2}: Nope", x);
25 }));
26 }
27 }
28
29 sleep!(2);
30 b.set();
31
32 for task in tasks {
33 let _ = task.await;
34 }
35}
Sourcepub async fn wait_change(&self) -> bool
pub async fn wait_change(&self) -> bool
Returns the new value when it has changed.
Sourcepub async fn wait_true(&self)
pub async fn wait_true(&self)
If the value is true
, returns immidiately, otherwise waits until it’s true
.
Examples found in repository?
examples/ex1.rs (line 18)
10async fn main() {
11 let b: FutureBool = FutureBool::new(false);
12 let mut tasks = Vec::new();
13
14 for x in 0..20 {
15 let clone = b.clone();
16 if x % 2 == 0 {
17 tasks.push(tokio::spawn(async move {
18 clone.wait_true().await;
19 eprintln!("{:2}: Yess", x);
20 }));
21 } else {
22 tasks.push(tokio::spawn(async move {
23 clone.wait_false().await;
24 eprintln!("{:2}: Nope", x);
25 }));
26 }
27 }
28
29 sleep!(2);
30 b.set();
31
32 for task in tasks {
33 let _ = task.await;
34 }
35}
Sourcepub async fn wait_false(&self)
pub async fn wait_false(&self)
If the value is false
, returns immidiately, otherwise waits until it’s false
.
Examples found in repository?
examples/ex1.rs (line 23)
10async fn main() {
11 let b: FutureBool = FutureBool::new(false);
12 let mut tasks = Vec::new();
13
14 for x in 0..20 {
15 let clone = b.clone();
16 if x % 2 == 0 {
17 tasks.push(tokio::spawn(async move {
18 clone.wait_true().await;
19 eprintln!("{:2}: Yess", x);
20 }));
21 } else {
22 tasks.push(tokio::spawn(async move {
23 clone.wait_false().await;
24 eprintln!("{:2}: Nope", x);
25 }));
26 }
27 }
28
29 sleep!(2);
30 b.set();
31
32 for task in tasks {
33 let _ = task.await;
34 }
35}
Trait Implementations§
Source§impl Clone for FutureBool
impl Clone for FutureBool
Source§fn clone(&self) -> FutureBool
fn clone(&self) -> FutureBool
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for FutureBool
impl !RefUnwindSafe for FutureBool
impl Send for FutureBool
impl Sync for FutureBool
impl Unpin for FutureBool
impl !UnwindSafe for FutureBool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more