#[non_exhaustive]pub struct IsmAttributes {
pub classification: Option<Classification>,
pub sci_controls: Box<[SciControl]>,
pub sar_identifiers: Box<[SarIdentifier]>,
pub dissem_controls: Box<[DissemControl]>,
pub rel_to: Box<[Trigraph]>,
pub declassify_on: Option<Box<str>>,
pub classified_by: Option<Box<str>>,
pub derived_from: Option<Box<str>>,
pub declass_exemption: Option<DeclassExemption>,
pub token_spans: Box<[TokenSpan]>,
}Expand description
Canonical in-memory representation of an IC classification marking.
Produced by marque-core::parser from scanner candidates.
Consumed by marque-rules::Rule implementations for validation.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.classification: Option<Classification>Primary classification level. None means parsing failed to identify one.
sci_controls: Box<[SciControl]>SCI controls (e.g., SI, TK, HCS). Ordered per CAPCO block ordering rules.
sar_identifiers: Box<[SarIdentifier]>Special Access Required identifiers.
dissem_controls: Box<[DissemControl]>Dissemination controls (e.g., NOFORN, RELIDO, ORCON, FISA).
rel_to: Box<[Trigraph]>REL TO country trigraphs. USA must be present and first if non-empty.
declassify_on: Option<Box<str>>Declassification date from CAB (free text, e.g., “20331231”).
classified_by: Option<Box<str>>Free-text “Classified By” identifier from CAB.
derived_from: Option<Box<str>>Free-text “Derived From” source from CAB.
declass_exemption: Option<DeclassExemption>Declassification exemption code from CAB (e.g., 25X1, 50X1-HUM).
token_spans: Box<[TokenSpan]>Per-token byte spans into the original source buffer, recorded by the parser as it walks the marking string. Phase 3 added this so rules can point at the exact offending byte range instead of the whole marking. Empty for CAB markings (CAB parsing is line-structured and doesn’t go through the token-walking path).
Indexing convention: token_spans is in document order. To find the
span for the Nth DissemControl, walk the slice and pick the Nth
entry whose kind == TokenKind::DissemControl.
Trait Implementations§
Source§impl Clone for IsmAttributes
impl Clone for IsmAttributes
Source§fn clone(&self) -> IsmAttributes
fn clone(&self) -> IsmAttributes
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more