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