Skip to main content

IssueKind

Enum IssueKind 

Source
pub enum IssueKind {
Show 14 variants MissingRequiredField { field_name: String, }, GroupNotAllowed { group: String, }, SegmentNotAllowed { segment: String, }, FieldConditionNotSatisfied { field_name: String, }, ConditionUnknown { field_name: String, unresolved: UnresolvedConditions, }, PackageCardinality { package_id: String, present: usize, min: usize, max: usize, codes: Vec<String>, }, RepeatedInTransaction { path: String, count: usize, }, CodeNotAllowedForPid { value: String, allowed: Vec<String>, }, AnswerNotInList { answer: String, list: String, allowed: Vec<String>, }, ValueTooLong { field_name: String, length: usize, max: usize, }, ValueNotNumeric { field_name: String, }, UntSegmentCountMismatch { declared: usize, actual: usize, }, UntCountNotVerifiable { unh_count: usize, }, StructureDiagnostic { kind: StructureDiagnosticKind, segment_id: String, position: usize, detail: String, },
}
Expand description

What kind of problem a ValidationIssue reports.

One variant per problem the validator actually emits. ErrorCodes lists 22 code strings, but only these are ever constructed; adding a new check means adding a variant, which the compiler then forces every narrator to handle.

Variants§

§

MissingRequiredField

AHB001 — a field the AHB marks mandatory for this PID is absent.

Fields

§field_name: String
§

GroupNotAllowed

AHB002 — a segment group is present although its AHB condition does not hold (Muss [96] without STS+7 ZAP). group is its path (SG4/SG5).

Fields

§group: String
§

SegmentNotAllowed

AHB002 — a segment is present although its own AHB condition does not hold (CAV+Z56 Wärmenutzung, Muss [239], without CAV+Z65 in its SG10). segment is its path (SG4/SG8/SG10/CAV).

Fields

§segment: String
§

FieldConditionNotSatisfied

AHB003 — the field is present but its AHB condition is not satisfied.

Fields

§field_name: String
§

ConditionUnknown

AHB005 — the condition expression could not be fully evaluated.

Fields

§field_name: String
§

PackageCardinality

AHB006 — number of codes present in a package is outside min..max.

Fields

§package_id: String
§present: usize
§min: usize
§max: usize
§codes: Vec<String>
§

RepeatedInTransaction

AHB007 — a group or segment the AHB allows once per transaction ([2061] “genau einmal je SG4 IDE (Vorgang)”) is sent count times in one. path is the group or segment (SG4/SG8, SG4/STS).

Fields

§path: String
§count: usize
§

CodeNotAllowedForPid

COD002 — the value is a valid code but not allowed for this PID.

Fields

§value: String
§allowed: Vec<String>
§

AnswerNotInList

COD003 — a response’s answer (AJT 4465, STS C556/9013) is not one of the codes of the EBD or Codeliste it names beside it (AJT 1082, C556/1131): AJT+ZB5+G_0059. The AHB lists which lists may be named; the EBD document says what they hold.

Fields

§answer: String
§list: String
§allowed: Vec<String>
§

ValueTooLong

FMT001 — the value is longer than its MIG format allows (an..512).

Fields

§field_name: String
§length: usize
§max: usize
§

ValueNotNumeric

FMT002 — a data element of numeric format (n..10) holds something that is not a number (O5D2DXBG1A).

Fields

§field_name: String
§

UntSegmentCountMismatch

STR007 — UNT’s declared segment count disagrees with the actual count.

Fields

§declared: usize
§actual: usize
§

UntCountNotVerifiable

STR007 — the input holds several messages, so the count is not checkable.

Fields

§unh_count: usize
§

StructureDiagnostic

STR003 / STR008 — a structure diagnostic raised during assembly.

detail carries the diagnostic’s own message verbatim: some diagnostics (e.g. mig_assembly::Assembler::assemble_with_diagnostics’s "Assembly failed: {e}" case) say something not derivable from (kind, segment_id, position) alone.

Fields

§segment_id: String
§position: usize
§detail: String

Implementations§

Source§

impl IssueKind

Source

pub fn code(&self) -> &'static str

The stable machine identifier, unchanged from the former code field.

Source

pub fn category(&self) -> ValidationCategory

The issue’s category. Derived, so it can never disagree with the kind.

Trait Implementations§

Source§

impl Clone for IssueKind

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IssueKind

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for IssueKind

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for IssueKind

Source§

impl PartialEq for IssueKind

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl Serialize for IssueKind

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for IssueKind

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.