Function find_field_with_variant_sequential_constrained

Source
pub fn find_field_with_variant_sequential_constrained(
    fields: &HashMap<String, Vec<(String, usize)>>,
    base_tag: &str,
    tracker: &mut FieldConsumptionTracker,
    valid_variants: Option<&[&str]>,
) -> Option<(String, Option<String>, usize)>
Expand description

Find field values by base tag with sequential consumption tracking and variant constraints

§Purpose

Enhanced version of find_field_with_variant_sequential that accepts a list of valid variants to constrain the search. This is crucial for numbered field tags like “50#1” and “50#2” where different positions accept different variants.

§Parameters

  • fields: HashMap of all parsed fields with position tracking
  • base_tag: Base field tag (e.g., “50”, “59”)
  • tracker: Mutable reference to consumption tracker for sequential processing
  • valid_variants: Optional list of valid variant letters (e.g., [“C”, “L”] for Field50InstructingParty)

§Returns

Option<(field_value, variant, position)> where:

  • field_value: The actual field content
  • variant: Optional variant letter (A, F, K, etc.) for enum fields
  • position: Original position in the message for ordering