Struct WaitTimeoutResult

pub struct WaitTimeoutResult(pub(in ::sync) bool);

A type indicating whether a timed wait on a condition variable returned due to a time out or not.

It is returned by the wait_timeout method.

Fields

0: bool

Implementations

impl WaitTimeoutResult

fn timed_out(&self) -> bool

Returns true if the wait was known to have timed out.

Examples

This example spawns a thread which will sleep 20 milliseconds before updating a boolean value and then notifying the condvar.

The main thread will wait with a 10 millisecond timeout on the condvar and will leave the loop upon timeout.

use std::sync::{Arc, Condvar, Mutex};
use std::thread;
use std::time::Duration;

let pair = Arc::new((Mutex::new(false), Condvar::new()));
let pair2 = Arc::clone(&pair);

# let handle =
thread::spawn(move || {
    let (lock, cvar) = &*pair2;

    // Let's wait 20 milliseconds before notifying the condvar.
    thread::sleep(Duration::from_millis(20));

    let mut started = lock.lock().unwrap();
    // We update the boolean value.
    *started = true;
    cvar.notify_one();
});

// Wait for the thread to start up.
let (lock, cvar) = &*pair;
loop {
    // Let's put a timeout on the condvar's wait.
    let result = cvar.wait_timeout(lock.lock().unwrap(), Duration::from_millis(10)).unwrap();
    // 10 milliseconds have passed.
    if result.1.timed_out() {
        // timed out now and we can leave.
        break
    }
}
# // Prevent leaks for Miri.
# let _ = handle.join();

Trait Implementations

impl Clone for WaitTimeoutResult

fn clone(&self) -> WaitTimeoutResult

impl Copy for WaitTimeoutResult

impl Debug for WaitTimeoutResult

fn fmt(&self, f: &mut Formatter<'_>) -> Result

impl Eq for WaitTimeoutResult

fn assert_fields_are_eq(&self)

impl PartialEq for WaitTimeoutResult

fn eq(&self, other: &WaitTimeoutResult) -> bool

impl StructuralPartialEq for WaitTimeoutResult

impl TrivialClone for WaitTimeoutResult

Auto Trait Implementations

impl Freeze for WaitTimeoutResult

impl RefUnwindSafe for WaitTimeoutResult

impl Send for WaitTimeoutResult

impl Sync for WaitTimeoutResult

impl Unpin for WaitTimeoutResult

impl UnsafeUnpin for WaitTimeoutResult

impl UnwindSafe for WaitTimeoutResult

Blanket Implementations

impl<T> Any for WaitTimeoutResult where T: 'static + ?Sized,

fn type_id(&self) -> TypeId

impl<T> Borrow<T> for WaitTimeoutResult where T: ?Sized,

fn borrow(&self) -> &T

impl<T> BorrowMut<T> for WaitTimeoutResult where T: ?Sized,

fn borrow_mut(&mut self) -> &mut T

impl<T> CloneToUninit for WaitTimeoutResult where T: Clone,

unsafe fn clone_to_uninit(&self, dest: *mut u8)

impl<T> From<T> for WaitTimeoutResult

fn from(t: T) -> T

Returns the argument unchanged.

impl<T> Printable for WaitTimeoutResult where T: Copy + Debug,

impl<T> SizeHint for WaitTimeoutResult where T: ?Sized,

fn lower_bound(&self) -> usize
fn upper_bound(&self) -> Option<usize>

impl<T> SizedTypeProperties for WaitTimeoutResult

impl<T> ToOwned for WaitTimeoutResult where T: Clone,

type Owned = T;
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)

impl<T, U> Into<U> for WaitTimeoutResult where U: From<T>,

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

impl<T, U> TryFrom<U> for WaitTimeoutResult where U: Into<T>,

type Error = Infallible;
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

impl<T, U> TryInto<U> for WaitTimeoutResult where U: TryFrom<T>,

type Error = <U as TryFrom<T>>::Error;
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>