Struct tokio::runtime::Handle [−][src]
Handle to the runtime.
The handle is internally reference-counted and can be freely cloned. A handle can be
obtained using the Runtime::handle
method.
Implementations
impl Handle
[src]
pub fn enter(&self) -> EnterGuard<'_>
[src]
Enter the runtime context. This allows you to construct types that must
have an executor available on creation such as Sleep
or TcpStream
.
It will also allow you to call methods such as tokio::spawn
.
pub fn current() -> Self
[src]
Returns a Handle
view over the currently running Runtime
Panic
This will panic if called outside the context of a Tokio runtime. That means that you must
call this on one of the threads being run by the runtime. Calling this from within a
thread created by std::thread::spawn
(for example) will cause a panic.
Examples
This can be used to obtain the handle of the surrounding runtime from an async block or function running on that runtime.
use tokio::runtime::Handle; // Inside an async block or function. let handle = Handle::current(); handle.spawn(async { println!("now running in the existing Runtime"); }); thread::spawn(move || { // Notice that the handle is created outside of this thread and then moved in handle.spawn(async { /* ... */ }) // This next line would cause a panic // let handle2 = Handle::current(); });
pub fn try_current() -> Result<Self, TryCurrentError>
[src]
Returns a Handle view over the currently running Runtime
Returns an error if no Runtime has been started
Contrary to current
, this never panics
pub fn spawn<F>(&self, future: F) -> JoinHandle<F::Output>ⓘNotable traits for JoinHandle<T>
impl<T> Future for JoinHandle<T> type Output = Result<T, JoinError>;
where
F: Future + Send + 'static,
F::Output: Send + 'static,
[src]
Notable traits for JoinHandle<T>
impl<T> Future for JoinHandle<T> type Output = Result<T, JoinError>;
F: Future + Send + 'static,
F::Output: Send + 'static,
Spawn a future onto the Tokio runtime.
This spawns the given future onto the runtime’s executor, usually a thread pool. The thread pool is then responsible for polling the future until it completes.
See module level documentation for more details.
Examples
use tokio::runtime::Runtime; // Create the runtime let rt = Runtime::new().unwrap(); // Get a handle from this runtime let handle = rt.handle(); // Spawn a future onto the runtime using the handle handle.spawn(async { println!("now running on a worker thread"); });
pub fn spawn_blocking<F, R>(&self, func: F) -> JoinHandle<R>ⓘNotable traits for JoinHandle<T>
impl<T> Future for JoinHandle<T> type Output = Result<T, JoinError>;
where
F: FnOnce() -> R + Send + 'static,
R: Send + 'static,
[src]
Notable traits for JoinHandle<T>
impl<T> Future for JoinHandle<T> type Output = Result<T, JoinError>;
F: FnOnce() -> R + Send + 'static,
R: Send + 'static,
Run the provided function on an executor dedicated to blocking operations.
Examples
use tokio::runtime::Runtime; // Create the runtime let rt = Runtime::new().unwrap(); // Get a handle from this runtime let handle = rt.handle(); // Spawn a blocking function onto the runtime using the handle handle.spawn_blocking(|| { println!("now running on a worker thread"); });
Trait Implementations
Auto Trait Implementations
impl !RefUnwindSafe for Handle
impl Send for Handle
impl Sync for Handle
impl Unpin for Handle
impl !UnwindSafe for Handle
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,
pub fn borrow_mut(&mut self) -> &mut Tⓘ
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub 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.
pub 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>,