pub enum SubscribeError {
EmptyWakeKeys,
}Expand description
Why a set of wake keys could not be accepted.
Variants§
EmptyWakeKeys
A runtime-built collection of wake keys turned out to be empty.
Matching is set overlap, so an empty set intersects nothing: no event could ever reach such a subscription through the waker, and the first time it passivated it would stay Dormant forever with its events unread.
WakeKeys makes that unrepresentable, so this is reachable only
through WakeKeys::try_from — the one place a type cannot decide,
because the keys came from data rather than from the call site. It is
deliberately raised there rather than inside
Subscriptions::subscribe_in_op, so the caller handles it where the
domain context to interpret an empty set actually exists.
A subscriber that genuinely wants waking on every event says so
explicitly: declare one constant key and return that key from
SubscriptionDef::wake_keys for every event. That costs a wake per
event by construction, which is the point — the price is visible in
the caller’s own code instead of hidden in an empty vector.
Trait Implementations§
Source§impl Debug for SubscribeError
impl Debug for SubscribeError
Source§impl Display for SubscribeError
impl Display for SubscribeError
Source§impl Error for SubscribeError
impl Error for SubscribeError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Auto Trait Implementations§
impl Freeze for SubscribeError
impl RefUnwindSafe for SubscribeError
impl Send for SubscribeError
impl Sync for SubscribeError
impl Unpin for SubscribeError
impl UnsafeUnpin for SubscribeError
impl UnwindSafe for SubscribeError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
fn with_context(self, otel_cx: Context) -> WithContext<Self> ⓘ
Source§fn with_current_context(self) -> WithContext<Self> ⓘ
fn with_current_context(self) -> WithContext<Self> ⓘ
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more