pub struct FutureHandle<T> { /* private fields */ }
Expand description
A handle to a running idle future.
You can use this handle to cancel the future and to retrieve the return value of a future that has finished.
If the Handle is dropped, the future will keep on running, and there will be no way to cancel it or get the return value.
This type is notably !Send
.
Implementations§
Source§impl<T> FutureHandle<T>
impl<T> FutureHandle<T>
Sourcepub fn cancel(self) -> Option<T>
pub fn cancel(self) -> Option<T>
If the future has finished, it returns Some(t)
the first time it is called.
If it has not finished, the future is dropped and it returns None
.
Sourcepub fn result(&self) -> Option<T>
pub fn result(&self) -> Option<T>
If the future has finished, it returns Some(t)
.
If it has not finished, it does nothing and return None
.
Sourcepub fn has_finished(&self) -> bool
pub fn has_finished(&self) -> bool
Returns true
if the future has finished, false
otherwise.
If it returns true
then you can be sure that cancel
will return Some(t)
.
Sourcepub async fn future(self) -> T
pub async fn future(self) -> T
Converts this handle into a future that is satisfied when the original job finishes. It returns the value returned by the original future.
Sourcepub fn guard(self) -> FutureHandleGuard<T>
pub fn guard(self) -> FutureHandleGuard<T>
Creates a FutureHandleGuard
that cancels the future on drop.
Auto Trait Implementations§
impl<T> Freeze for FutureHandle<T>
impl<T> !RefUnwindSafe for FutureHandle<T>
impl<T> !Send for FutureHandle<T>
impl<T> !Sync for FutureHandle<T>
impl<T> Unpin for FutureHandle<T>
impl<T> !UnwindSafe for FutureHandle<T>
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.