pub trait FacetTerm:
Copy
+ Eq
+ Sized
+ 'static {
// Required methods
fn all() -> &'static [Self];
fn as_str(self) -> &'static str;
fn from_term(s: &str) -> Option<Self>;
fn hazard() -> Self;
}Expand description
A single facet term: the closed vocabulary of one axis, with its TOML spelling.
Required Methods§
Sourcefn all() -> &'static [Self]
fn all() -> &'static [Self]
Every term, in declaration order (for ordinals, least-severe first).
Sourcefn hazard() -> Self
fn hazard() -> Self
The term a level is LEAST likely to admit — the one Capability::worst carries on this axis.
Not derivable from the term list, which is why it is declared. Most ordinals run
least-severe to most, so the ladder top is the hazard; but Isolation and Pinning are
TRUST ladders where higher is safer and a level FLOORS them (>= namespace, >= version),
so their hazard is the BOTTOM. And a categorical has no order at all: TriggerKind::None
means “not recurring”, the benign case, while Clock/Event are what persist.
Hand-writing this per axis inside worst() is what let it drift — it carried
TriggerKind::None, so a clause allowing only non-recurring triggers admitted the
fail-closed sentinel on that axis.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".