Struct tokio_util::task::LocalPoolHandle
source · [−]pub struct LocalPoolHandle { /* private fields */ }
rt
only.Expand description
A handle to a local pool, used for spawning !Send
tasks.
Implementations
sourceimpl LocalPoolHandle
impl LocalPoolHandle
sourcepub fn new(pool_size: usize) -> LocalPoolHandle
pub fn new(pool_size: usize) -> LocalPoolHandle
Create a new pool of threads to handle !Send
tasks. Spawn tasks onto this
pool via LocalPoolHandle::spawn_pinned
.
Panics
Panics if the pool size is less than one.
sourcepub fn spawn_pinned<F, Fut>(&self, create_task: F) -> JoinHandle<Fut::Output> where
F: FnOnce() -> Fut,
F: Send + 'static,
Fut: Future + 'static,
Fut::Output: Send + 'static,
pub fn spawn_pinned<F, Fut>(&self, create_task: F) -> JoinHandle<Fut::Output> where
F: FnOnce() -> Fut,
F: Send + 'static,
Fut: Future + 'static,
Fut::Output: Send + 'static,
Spawn a task onto a worker thread and pin it there so it can’t be moved
off of the thread. Note that the future is not Send
, but the
FnOnce
which creates it is.
Examples
use std::rc::Rc;
use tokio_util::task::LocalPoolHandle;
#[tokio::main]
async fn main() {
// Create the local pool
let pool = LocalPoolHandle::new(1);
// Spawn a !Send future onto the pool and await it
let output = pool
.spawn_pinned(|| {
// Rc is !Send + !Sync
let local_data = Rc::new("test");
// This future holds an Rc, so it is !Send
async move { local_data.to_string() }
})
.await
.unwrap();
assert_eq!(output, "test");
}
Trait Implementations
sourceimpl Clone for LocalPoolHandle
impl Clone for LocalPoolHandle
sourcefn clone(&self) -> LocalPoolHandle
fn clone(&self) -> LocalPoolHandle
Returns a copy of the value. Read more
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
Auto Trait Implementations
impl !RefUnwindSafe for LocalPoolHandle
impl Send for LocalPoolHandle
impl Sync for LocalPoolHandle
impl Unpin for LocalPoolHandle
impl !UnwindSafe for LocalPoolHandle
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more