[−][src]Struct async_executors::TokioTp
feature="tokio_tp"
only.An executor that uses tokio::runtime::Runtime.
Unwind Safety.
You must only spawn futures to this API that are unwind safe. Tokio will wrap it in std::panic::AssertUnwindSafe and wrap the poll invocation with std::panic::catch_unwind.
They reason that this is fine because they require Send + 'static
on the future. As far
as I can tell this is wrong. Unwind safety can be circumvented in several ways even with
Send + 'static
(eg. parking_lot::Mutex is Send + 'static but !UnwindSafe).
You should make sure that if your future panics, no code that lives on after the spawned task has unwound, nor any destructors called during the unwind can observe data in an inconsistent state.
See the relevant catch_unwind RFC and it's discussion threads for more info as well as the documentation in stdlib.
Methods
impl TokioTp
[src]
pub fn block_on<F: Future>(&mut self, f: F) -> F::Output
[src]
Wrapper around Runtime::block_on.
Trait Implementations
impl Clone for TokioTp
[src]
impl Debug for TokioTp
[src]
impl Spawn for TokioTp
[src]
fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), FutSpawnErr>
[src]
fn status(&self) -> Result<(), SpawnError>
[src]
impl SpawnHandle for TokioTp
[src]
fn spawn_handle<Fut, Out>(
&self,
future: Fut
) -> Result<JoinHandle<Out>, SpawnError> where
Fut: Future<Output = Out> + 'static + Send,
Out: 'static + Send,
[src]
&self,
future: Fut
) -> Result<JoinHandle<Out>, SpawnError> where
Fut: Future<Output = Out> + 'static + Send,
Out: 'static + Send,
impl<Out: 'static + Send> SpawnHandleOs<Out> for TokioTp
[src]
fn spawn_handle_os(
&self,
future: Pin<Box<dyn Future<Output = Out> + Send>>
) -> Result<JoinHandle<Out>, SpawnError>
[src]
&self,
future: Pin<Box<dyn Future<Output = Out> + Send>>
) -> Result<JoinHandle<Out>, SpawnError>
impl<'_> TryFrom<&'_ mut Builder> for TokioTp
[src]
Auto Trait Implementations
impl !RefUnwindSafe for TokioTp
impl Send for TokioTp
impl Sync for TokioTp
impl Unpin for TokioTp
impl !UnwindSafe for TokioTp
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T> Instrument for T
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<Sp> SpawnExt for Sp where
Sp: Spawn + ?Sized,
[src]
Sp: Spawn + ?Sized,
fn spawn<Fut>(&self, future: Fut) -> Result<(), SpawnError> where
Fut: Future<Output = ()> + Send + 'static,
[src]
Fut: Future<Output = ()> + Send + 'static,
fn spawn_with_handle<Fut>(
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError> where
Fut: Future + Send + 'static,
<Fut as Future>::Output: Send,
[src]
&self,
future: Fut
) -> Result<RemoteHandle<<Fut as Future>::Output>, SpawnError> where
Fut: Future + Send + 'static,
<Fut as Future>::Output: Send,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> WithSubscriber for T
[src]
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
S: Into<Dispatch>,