pub enum RegisterError {
UnknownDep(NodeId),
OperatorWithoutDeps,
InitialOnlyForStateNodes,
TerminalDep(NodeId),
OperatorSeedSentinel,
}Expand description
Errors returnable by Core::register and its sugar wrappers
(Core::register_state, Core::register_producer,
Core::register_derived, Core::register_dynamic,
Core::register_operator).
Slice H (2026-05-07) promoted these from assert!/panic! to typed
errors so that callers can recover from contract violations without
process abort. Every variant corresponds to a construction-time
invariant that the caller is responsible for upholding; the dispatcher
rejects the registration before any reactive state is created (so
there is no Message::Error channel through which to surface the
failure — these are imperative-layer errors, not reactive ones).
All variants are zero-side-effect: when Core::register returns
Err, no node has been added to the graph and any handle retains
taken on the way in (e.g. operator scratch seed retains via
BindingBoundary::retain_handle) have been released.
Variants§
UnknownDep(NodeId)
One of the supplied dep ids is not a registered node.
OperatorWithoutDeps
op was supplied (operator node) but deps was empty. Operator
nodes need at least one dep — for subscription-managed combinators
with no declared deps, use Core::register_producer instead.
InitialOnlyForStateNodes
NodeOpts::initial was set to a real handle but the registration
shape is not a state node (state nodes are deps.is_empty() && fn_id.is_none() && op.is_none()). Initial cache only makes sense
for state nodes.
TerminalDep(NodeId)
A supplied dep is terminal (COMPLETE / ERROR) AND not
resubscribable. Adding it would create a permanent wedge — the dep
will never re-emit, so the registered node would be stuck.
Mirrors SetDepsError::TerminalDep at registration time.
OperatorSeedSentinel
A stateful operator (OperatorOp::Scan / OperatorOp::Reduce)
was registered with seed = NO_HANDLE. R2.5.3 first-run gate
requires the seed to be a real handle so that the operator can
emit on its first fire.
Trait Implementations§
Source§impl Clone for RegisterError
impl Clone for RegisterError
Source§fn clone(&self) -> RegisterError
fn clone(&self) -> RegisterError
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RegisterError
impl Debug for RegisterError
Source§impl Display for RegisterError
impl Display for RegisterError
Source§impl Error for RegisterError
impl Error for RegisterError
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()
Source§impl PartialEq for RegisterError
impl PartialEq for RegisterError
Source§fn eq(&self, other: &RegisterError) -> bool
fn eq(&self, other: &RegisterError) -> bool
self and other values to be equal, and is used by ==.impl Eq for RegisterError
impl StructuralPartialEq for RegisterError
Auto Trait Implementations§
impl Freeze for RegisterError
impl RefUnwindSafe for RegisterError
impl Send for RegisterError
impl Sync for RegisterError
impl Unpin for RegisterError
impl UnsafeUnpin for RegisterError
impl UnwindSafe for RegisterError
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.