[][src]Struct safe_async_scoped::Scope

pub struct Scope<'env> { /* fields omitted */ }

An opaque utility for spawning local tasks that has access to the scope that Scope has access to.

Example

let listener = Async::new(TcpListener::bind("127.0.0.1:8080").unwrap()).unwrap();
let lala = String::from("hello");
{
    let scope = Scope::new();
    scope
        .start(async {
            loop {
                let (client, _) = listener.accept().await.unwrap();
                scope.spawn(async {
                    handle(client, &lala).await;
                });
            }
        })
        .await;
}

Implementations

impl<'env> Scope<'env>[src]

pub fn new() -> Self[src]

Creates a new scope.

pub fn spawn<F: Future<Output = ()> + 'env>(&self, fut: F)[src]

Schedules a future to be spawned onto the scope.

pub async fn start<'future, 'scope: 'future>(
    &'scope self,
    fut: impl Future<Output = ()> + 'future
)
[src]

Starts a context in which scoped tasks can be spawned. When fut resolves, all spawned tasks are forcibly dropped.

Trait Implementations

impl<'env> Default for Scope<'env>[src]

Auto Trait Implementations

impl<'env> !RefUnwindSafe for Scope<'env>

impl<'env> !Send for Scope<'env>

impl<'env> !Sync for Scope<'env>

impl<'env> Unpin for Scope<'env>

impl<'env> !UnwindSafe for Scope<'env>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.