Skip to main content

FacetTerm

Trait FacetTerm 

Source
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§

Source

fn all() -> &'static [Self]

Every term, in declaration order (for ordinals, least-severe first).

Source

fn as_str(self) -> &'static str

The term’s canonical TOML spelling.

Source

fn from_term(s: &str) -> Option<Self>

Parse a term from its TOML spelling.

Source

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

Implementors§