Struct NotifyHandle

Source
pub struct NotifyHandle { /* private fields */ }
Expand description

A NotifyHandle is the core value through which notifications are routed in the futures crate.

All instances of Task will contain a NotifyHandle handle internally. This handle itself contains a trait object pointing to an instance of the Notify trait, allowing notifications to get routed through it.

The NotifyHandle type internally does not codify any particular memory management strategy. Internally it contains an instance of *mut UnsafeNotify, and more details about that trait can be found on its own documentation. Consequently, though, the one constructor of this type, NotifyHandle::new, is unsafe to call. It is not recommended to call this constructor directly.

If you’re working with the standard library then it’s recommended to work with the Arc type. If you have a struct, T, which implements the Notify trait, then you can construct this with NotifyHandle::from(t: Arc<T>). The coercion to UnsafeNotify will happen automatically and safely for you.

When working externally from the standard library it’s recommended to provide a similar safe constructor for your custom type as opposed to recommending an invocation of NotifyHandle::new directly.

Implementations§

Source§

impl NotifyHandle

Source

pub unsafe fn new(inner: *mut dyn UnsafeNotify) -> NotifyHandle

Constructs a new NotifyHandle directly.

Note that most code will not need to call this. Implementers of the UnsafeNotify trait will typically provide a wrapper that calls this but you otherwise shouldn’t call it directly.

If you’re working with the standard library then it’s recommended to use the NotifyHandle::from function instead which works with the safe Arc type and the safe Notify trait.

Source

pub fn notify(&self, id: usize)

Invokes the underlying instance of Notify with the provided id.

Trait Implementations§

Source§

impl Clone for NotifyHandle

Source§

fn clone(&self) -> NotifyHandle

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NotifyHandle

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Drop for NotifyHandle

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl<T> From<&'static T> for NotifyHandle
where T: Notify,

Source§

fn from(src: &'static T) -> NotifyHandle

Converts to this type from the input type.
Source§

impl<T> From<Arc<T>> for NotifyHandle
where T: Notify + 'static,

Source§

fn from(rc: Arc<T>) -> NotifyHandle

Converts to this type from the input type.
Source§

impl<'a, T> From<NodeToHandle<'a, T>> for NotifyHandle

Source§

fn from(handle: NodeToHandle<'a, T>) -> NotifyHandle

Converts to this type from the input type.
Source§

impl Send for NotifyHandle

Source§

impl Sync for NotifyHandle

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.