Skip to main content

Subscription

Struct Subscription 

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

RAII subscription handle.

Returned by Core::subscribe. While the handle is held, the sink stays registered against its node. Dropping the handle (explicitly via drop(sub) or implicitly at scope exit) unsubscribes the sink — no manual unsubscribe() call is needed. Per §10.12 of the rust-port session doc.

§Lifetime semantics

The subscription holds a Weak reference back to the Core’s state. If the Core is dropped before the subscription, the Drop impl is a silent no-op (the sink has nowhere to deregister from anyway). This avoids a reference cycle when subscribers capture an Arc<Core> in their closure.

§Thread safety

Send + Sync. The handle can be moved across threads or dropped from any thread.

§Not Clone

Subscription owns the unsubscribe action exclusively. Cloning would require either “first drop wins” or “last drop wins” semantics, both of which surprise. If a binding needs multiple deregistration handles, it should subscribe multiple times (each producing a fresh handle) or wrap the single Subscription in Arc<Mutex<Option<Subscription>>>.

Implementations§

Source§

impl Subscription

Source

pub fn node_id(&self) -> NodeId

The node this subscription is attached to.

Trait Implementations§

Source§

impl Drop for Subscription

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

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> 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, 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.