pub enum CapabilityError {
ManifestJson(Error),
UnknownCapability {
external: String,
capability: String,
},
LoadRejected {
marker: &'static str,
story: String,
missing: Vec<MissingCapability>,
},
}Expand description
Errors from manifest parsing or the row join.
Variants§
ManifestJson(Error)
UnknownCapability
The tier-1 admission rule: a manifest-declared capability name that no
register_capability call ever registered. Always a load-time error
— never silently dropped (an unregistered name means the join cannot
prove which ComponentId the row may touch, which would under-report
access, the one direction docs/effects-spec.md §3 forbids).
LoadRejected
Load-boundary hard error (issue #912, RULED 2026-07-18 option (b)):
a story failed to load under a marker because that marker’s
CapabilityRegistry is missing one or more manifest-required
capabilities. Raised by bevy-brink’s fulfill_flow_requests at
the story-load boundary itself — the tier-1 admission posture
applied per-marker. Before this variant existed, an unregistered
name only ever surfaced as a per-story [UnknownCapability] logged
into CapabilityTable at call time (a silent err-table); this is
the load refusing to happen at all, loudly, naming the marker, the
story, and every missing capability at once (not just the first).
Trait Implementations§
Source§impl Debug for CapabilityError
impl Debug for CapabilityError
Source§impl Display for CapabilityError
impl Display for CapabilityError
Source§impl Error for CapabilityError
impl Error for CapabilityError
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 !RefUnwindSafe for CapabilityError
impl !UnwindSafe for CapabilityError
impl Freeze for CapabilityError
impl Send for CapabilityError
impl Sync for CapabilityError
impl Unpin for CapabilityError
impl UnsafeUnpin for CapabilityError
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
impl<T> ConditionalSend for Twhere
T: Send,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.