Struct Expectation

Source
pub struct Expectation<T> { /* private fields */ }

Implementations§

Source§

impl<T> Expectation<T>
where T: Send + 'static,

Source

pub fn is_cancelled(&self) -> bool

Show whether the task is cancelled.

Source

pub fn is_done(&self) -> bool

Show whether the task is done.

Source

pub fn cancel(&mut self) -> Result<(), ExecutorError>

Cancel the task when the task is still waiting in line.

If the task is started running, Err will be return.

If the task is already cancel, Err will be return.

Source

pub fn get_result(&mut self) -> Result<T, ExecutorError>

This method returns a Result which will return the return value of your closure when Ok, and Err will be returned when your closure panic.

§Example
let pool = threadpool_executor::ThreadPool::new(1);
let exp = pool.execute(|| 1 + 2);
assert_eq!(exp.unwrap().get_result().unwrap(), 3);

When panic:

let pool = threadpool_executor::ThreadPool::new(1);
let exp = pool.execute(|| {
    panic!("panic!!!");
});
let res = exp.unwrap().get_result();
assert!(res.is_err());
if let Err(err) = res {
    matches!(err.kind(), threadpool_executor::error::ErrorKind::Panic);
}
Source

pub fn get_result_timeout( &mut self, timeout: Duration, ) -> Result<T, ExecutorError>

This method returns a Result which will return the return value of your closure when Ok, and Err will be returned when your closure panic or timeout.

§Example
let pool = threadpool_executor::ThreadPool::new(1);
let exp = pool.execute(|| 1 + 2);
assert_eq!(exp.unwrap().get_result_timeout(std::time::Duration::from_secs(1)).unwrap(), 3);

When timeout:

use std::time::Duration;
let pool = threadpool_executor::ThreadPool::new(1);
let exp = pool.execute(|| {
    std::thread::sleep(Duration::from_secs(3));
});
let res = exp.unwrap().get_result_timeout(Duration::from_secs(1));
assert!(res.is_err());
if let Err(err) = res {
    matches!(err.kind(), threadpool_executor::error::ErrorKind::TimeOut);
}

Trait Implementations§

Source§

impl<T> Drop for Expectation<T>

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<T> Freeze for Expectation<T>

§

impl<T> RefUnwindSafe for Expectation<T>

§

impl<T> Send for Expectation<T>
where T: Send,

§

impl<T> Sync for Expectation<T>
where T: Send,

§

impl<T> Unpin for Expectation<T>
where T: Unpin,

§

impl<T> UnwindSafe for Expectation<T>

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

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

Source§

fn into(self) -> U

Calls U::from(self).

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

Source§

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

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.