Sha256: 0e3f7d7883b75337b0b92ff55e477f0bf96f6eb08def7d953676a289fd9696ec

Contents?: true

Size: 1.88 KB

Versions: 27

Compression:

Stored size: 1.88 KB

Contents

use alloc::sync::Arc;

/// A way of waking up a specific task.
///
/// By implementing this trait, types that are expected to be wrapped in an `Arc`
/// can be converted into [`Waker`] objects.
/// Those Wakers can be used to signal executors that a task it owns
/// is ready to be `poll`ed again.
///
/// Currently, there are two ways to convert `ArcWake` into [`Waker`]:
///
/// * [`waker`](super::waker()) converts `Arc<impl ArcWake>` into [`Waker`].
/// * [`waker_ref`](super::waker_ref()) converts `&Arc<impl ArcWake>` into [`WakerRef`] that
///   provides access to a [`&Waker`][`Waker`].
///
/// [`Waker`]: std::task::Waker
/// [`WakerRef`]: super::WakerRef
// Note: Send + Sync required because `Arc<T>` doesn't automatically imply
// those bounds, but `Waker` implements them.
pub trait ArcWake: Send + Sync {
    /// Indicates that the associated task is ready to make progress and should
    /// be `poll`ed.
    ///
    /// This function can be called from an arbitrary thread, including threads which
    /// did not create the `ArcWake` based [`Waker`].
    ///
    /// Executors generally maintain a queue of "ready" tasks; `wake` should place
    /// the associated task onto this queue.
    ///
    /// [`Waker`]: std::task::Waker
    fn wake(self: Arc<Self>) {
        Self::wake_by_ref(&self)
    }

    /// Indicates that the associated task is ready to make progress and should
    /// be `poll`ed.
    ///
    /// This function can be called from an arbitrary thread, including threads which
    /// did not create the `ArcWake` based [`Waker`].
    ///
    /// Executors generally maintain a queue of "ready" tasks; `wake_by_ref` should place
    /// the associated task onto this queue.
    ///
    /// This function is similar to [`wake`](ArcWake::wake), but must not consume the provided data
    /// pointer.
    ///
    /// [`Waker`]: std::task::Waker
    fn wake_by_ref(arc_self: &Arc<Self>);
}

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/futures-task-0.3.31/src/arc_wake.rs
wasmtime-29.0.0 ./ext/cargo-vendor/futures-task-0.3.31/src/arc_wake.rs
wasmtime-28.0.0 ./ext/cargo-vendor/futures-task-0.3.31/src/arc_wake.rs
wasmtime-27.0.0 ./ext/cargo-vendor/futures-task-0.3.31/src/arc_wake.rs
wasmtime-26.0.0 ./ext/cargo-vendor/futures-task-0.3.31/src/arc_wake.rs
wasmtime-25.0.2 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-25.0.1 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-25.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-24.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-23.0.2 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-22.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-21.0.1 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-20.0.2 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-20.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-18.0.3 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-17.0.1 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-17.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-16.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-15.0.1 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs
wasmtime-15.0.0 ./ext/cargo-vendor/futures-task-0.3.30/src/arc_wake.rs