pub struct ActLabel { /* private fields */ }Expand description
One family-qualified label: FAMILY/LABEL.
A TYPE rather than a String with a comment, for the reason this whole
wave exists: a rule that lives only in prose is open in every
implementation that never read the prose. An unqualified label is
ambiguous — ACCESS_GRANT means nothing without the family that scopes
it, and two vocabularies may both define a bare word — so an unqualified
one is refused at parse rather than carried and disambiguated later by
whoever guesses.
§What is validated, and what deliberately is not
The STRUCTURE is ours: exactly one separator, neither side empty. The SPELLING is the vocabulary’s — no character set is imposed, because a third-party vocabulary may name its families in a convention this project has not thought of, and refusing those would make the extension model in RFC 0006 a formality. Refuse what is meaningless; do not legislate taste.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for ActLabel
impl<'de> Deserialize<'de> for ActLabel
Source§fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error>
impl Eq for ActLabel
Source§impl FromStr for ActLabel
impl FromStr for ActLabel
Source§fn from_str(raw: &str) -> Result<Self, Self::Err>
fn from_str(raw: &str) -> Result<Self, Self::Err>
The ONE place the qualified form is matched. The error is a plain
message rather than an crate::errors::AphError, for the same reason
the closed vocabularies’ is: §8.3 step 1 classifies a malformed value as
a STRICT-PARSE rejection, the layer below the protocol’s closed set of
error codes.