pub struct NormalizedFile {
pub version: u32,
pub scenario_name: Option<String>,
pub defaults_labels: Option<BTreeMap<String, String>>,
pub entries: Vec<NormalizedEntry>,
}Expand description
A v2 scenario file with all defaults applied.
This is the output of normalize. The defaults: block has been
flattened into each NormalizedEntry for fields that do not participate
in pack-level composition (rate, duration, encoder, sink). The
defaults.labels map is handled specially: see the module docs for the
full precedence chain.
§Invariants
- Every entry has a concrete
rate,encoder, andsink. - For inline entries,
NormalizedEntry::labelscontains the merged result ofdefaults.labelsand the entry’s own labels (entry wins on conflict). - For pack entries,
NormalizedEntry::labelscontains only the entry’s own labels (unchanged, possiblyNone). The file-leveldefaults.labelsis carried onSelf::defaults_labelsfor Phase 3 pack expansion to apply at the correct precedence slot. - Pack entries retain their
packandoverridesfields untouched — pack expansion is performed in a later phase. afterclauses,phase_offset, andclock_groupare carried through unchanged.
Fields§
§version: u32Schema version. Always 2 after normalization.
scenario_name: Option<String>File-level scenario_name carried verbatim. Pure metadata —
ignored by every compiler phase, surfaced for runtime conflict checks.
defaults_labels: Option<BTreeMap<String, String>>The file-level defaults.labels map, carried forward verbatim for
later compilation phases to apply at the correct precedence slot.
For pack entries this is the level-2 label layer (per spec §2.2) that
pack expansion must interleave with pack shared_labels (level 4),
pack per-metric labels (level 5), and entry-level labels (level 6).
For inline entries the merge is already baked into
NormalizedEntry::labels so this map is redundant — but carrying
it here for both cases keeps the type uniform.
None when the source file had no defaults: block or when
defaults.labels was omitted or empty.
entries: Vec<NormalizedEntry>All entries with defaults applied, in the order they appeared in the source file.
Trait Implementations§
Source§impl Clone for NormalizedFile
impl Clone for NormalizedFile
Source§fn clone(&self) -> NormalizedFile
fn clone(&self) -> NormalizedFile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more