Skip to main content

SyntaxError

Enum SyntaxError 

Source
#[non_exhaustive]
pub enum SyntaxError {
Show 29 variants SyntaxVersionNotSupported, NotActualRecipient, InvalidValue, Missing, ValueNotSupportedHere, NotSupportedHere, TooManyConstituents, NoAgreement, Unspecified, InvalidAsServiceCharacter, InvalidCharacters, InvalidServiceCharacters, UnknownSender, TooOld, TestIndicatorNotSupported, DuplicateDetected, ReferencesDoNotMatch, ControlCountMismatch, GroupsAndMessagesMixed, LowerLevelEmpty, InvalidOccurrenceOutsideMessage, TooManyRepetitions, TooManyGroupRepetitions, InvalidCharacterType, DataElementTooLong, DataElementTooShort, TrailingSeparator, CharacterSetNotSupported, EnvelopeFunctionalityNotSupported,
}
Expand description

CONTRL syntax error code — DE 0085, the nature of one fault.

The variants are exactly the code set of ISO 9735-4 Annex A, and permitted_at reproduces that annex’s table of which code may be used at which reporting level. Emitting a code at a level the annex forbids produces a CONTRL the partner’s translator will reject, so Contrl checks it rather than trusting the caller.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

SyntaxVersionNotSupported

2 — syntax version or level not supported.

§

NotActualRecipient

7 — interchange recipient not actual recipient.

§

InvalidValue

12 — invalid value.

§

Missing

13 — missing.

§

ValueNotSupportedHere

14 — value not supported in this position.

§

NotSupportedHere

15 — not supported in this position.

§

TooManyConstituents

16 — too many constituents.

§

NoAgreement

17 — no agreement.

§

Unspecified

18 — unspecified error.

§

InvalidAsServiceCharacter

20 — character invalid as service character.

§

InvalidCharacters

21 — invalid character(s).

§

InvalidServiceCharacters

22 — invalid service character(s).

§

UnknownSender

23 — unknown interchange sender.

§

TooOld

24 — too old.

§

TestIndicatorNotSupported

25 — test indicator not supported.

§

DuplicateDetected

26 — duplicate detected.

§

ReferencesDoNotMatch

28 — references do not match.

§

ControlCountMismatch

29 — control or octet count does not match number of instances received.

§

GroupsAndMessagesMixed

30 — groups and messages/packages mixed.

§

LowerLevelEmpty

32 — lower level empty.

§

InvalidOccurrenceOutsideMessage

33 — invalid occurrence outside message, package or group.

§

TooManyRepetitions

35 — too many repetitions.

§

TooManyGroupRepetitions

36 — too many segment group repetitions.

§

InvalidCharacterType

37 — invalid type of character(s).

§

DataElementTooLong

39 — data element too long.

§

DataElementTooShort

40 — data element too short.

§

TrailingSeparator

45 — trailing separator.

§

CharacterSetNotSupported

46 — character set not supported.

§

EnvelopeFunctionalityNotSupported

47 — envelope functionality not supported.

Implementations§

Source§

impl SyntaxError

Source

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

The DE 0085 code value.

Source

pub const fn description(self) -> &'static str

The Annex A code name.

Source

pub const fn permitted_at(self, level: ReportingLevel) -> bool

Whether ISO 9735-4 Annex A allows this code at level.

§Example
use edifact_rs::contrl::{ReportingLevel, SyntaxError};

// "Too many segment group repetitions" is a segment-level finding only.
assert!(SyntaxError::TooManyGroupRepetitions.permitted_at(ReportingLevel::Segment));
assert!(!SyntaxError::TooManyGroupRepetitions.permitted_at(ReportingLevel::Interchange));

// "Unknown interchange sender" can only be said about the interchange.
assert!(SyntaxError::UnknownSender.permitted_at(ReportingLevel::Interchange));
assert!(!SyntaxError::UnknownSender.permitted_at(ReportingLevel::Message));
Source

pub fn for_error(error: &EdifactError) -> Self

The CONTRL code that best names an EdifactError.

ISO 9735-4 §5.3.3 asks for the most precise code available and warns against reaching for a general one when a specific one fits, so this maps each variant to the narrowest Annex A code that is true of it, falling back to 18 (unspecified) only where the annex genuinely offers nothing better.

§Example
use edifact_rs::contrl::SyntaxError;
use edifact_rs::EdifactError;

let err = EdifactError::MessageCountMismatch { expected: 2, actual: 1 };
assert_eq!(SyntaxError::for_error(&err), SyntaxError::ControlCountMismatch);
assert_eq!(SyntaxError::for_error(&err).code(), "29");
Source

pub fn for_issue(issue: &ValidationIssue) -> Self

The best CONTRL code for a ValidationIssue, via its stable code.

Works for issues raised by any validator, including third-party ones, because it reads ValidationIssue::error_code rather than needing the original EdifactError. An issue with no stable code — a profile rule finding, typically — is 18 (unspecified), which is what the annex provides for a fault it does not name.

Trait Implementations§

Source§

impl Clone for SyntaxError

Source§

fn clone(&self) -> SyntaxError

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 Copy for SyntaxError

Source§

impl Debug for SyntaxError

Source§

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

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

impl Display for SyntaxError

Source§

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

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

impl Eq for SyntaxError

Source§

impl Hash for SyntaxError

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for SyntaxError

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for SyntaxError

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> 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<D> OwoColorize for D

Source§

fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>
where C: Color,

Set the foreground color generically Read more
Source§

fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>
where C: Color,

Set the background color generically. Read more
Source§

fn black(&self) -> FgColorDisplay<'_, Black, Self>

Change the foreground color to black
Source§

fn on_black(&self) -> BgColorDisplay<'_, Black, Self>

Change the background color to black
Source§

fn red(&self) -> FgColorDisplay<'_, Red, Self>

Change the foreground color to red
Source§

fn on_red(&self) -> BgColorDisplay<'_, Red, Self>

Change the background color to red
Source§

fn green(&self) -> FgColorDisplay<'_, Green, Self>

Change the foreground color to green
Source§

fn on_green(&self) -> BgColorDisplay<'_, Green, Self>

Change the background color to green
Source§

fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>

Change the foreground color to yellow
Source§

fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>

Change the background color to yellow
Source§

fn blue(&self) -> FgColorDisplay<'_, Blue, Self>

Change the foreground color to blue
Source§

fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>

Change the background color to blue
Source§

fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to magenta
Source§

fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to magenta
Source§

fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>

Change the foreground color to purple
Source§

fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>

Change the background color to purple
Source§

fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>

Change the foreground color to cyan
Source§

fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>

Change the background color to cyan
Source§

fn white(&self) -> FgColorDisplay<'_, White, Self>

Change the foreground color to white
Source§

fn on_white(&self) -> BgColorDisplay<'_, White, Self>

Change the background color to white
Source§

fn default_color(&self) -> FgColorDisplay<'_, Default, Self>

Change the foreground color to the terminal default
Source§

fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>

Change the background color to the terminal default
Source§

fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>

Change the foreground color to bright black
Source§

fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>

Change the background color to bright black
Source§

fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>

Change the foreground color to bright red
Source§

fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>

Change the background color to bright red
Source§

fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>

Change the foreground color to bright green
Source§

fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>

Change the background color to bright green
Source§

fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>

Change the foreground color to bright yellow
Source§

fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>

Change the background color to bright yellow
Source§

fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>

Change the foreground color to bright blue
Source§

fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>

Change the background color to bright blue
Source§

fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright magenta
Source§

fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright magenta
Source§

fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>

Change the foreground color to bright purple
Source§

fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>

Change the background color to bright purple
Source§

fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>

Change the foreground color to bright cyan
Source§

fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>

Change the background color to bright cyan
Source§

fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>

Change the foreground color to bright white
Source§

fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>

Change the background color to bright white
Source§

fn bold(&self) -> BoldDisplay<'_, Self>

Make the text bold
Source§

fn dimmed(&self) -> DimDisplay<'_, Self>

Make the text dim
Source§

fn italic(&self) -> ItalicDisplay<'_, Self>

Make the text italicized
Source§

fn underline(&self) -> UnderlineDisplay<'_, Self>

Make the text underlined
Make the text blink
Make the text blink (but fast!)
Source§

fn reversed(&self) -> ReversedDisplay<'_, Self>

Swap the foreground and background colors
Source§

fn hidden(&self) -> HiddenDisplay<'_, Self>

Hide the text
Source§

fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>

Cross out the text
Source§

fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the foreground color at runtime. Only use if you do not know which color will be used at compile-time. If the color is constant, use either OwoColorize::fg or a color-specific method, such as OwoColorize::green, Read more
Source§

fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>
where Color: DynColor,

Set the background color at runtime. Only use if you do not know what color to use at compile-time. If the color is constant, use either OwoColorize::bg or a color-specific method, such as OwoColorize::on_yellow, Read more
Source§

fn fg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> FgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the foreground color to a specific RGB value.
Source§

fn bg_rgb<const R: u8, const G: u8, const B: u8>( &self, ) -> BgColorDisplay<'_, CustomColor<R, G, B>, Self>

Set the background color to a specific RGB value.
Source§

fn truecolor(&self, r: u8, g: u8, b: u8) -> FgDynColorDisplay<'_, Rgb, Self>

Sets the foreground color to an RGB value.
Source§

fn on_truecolor(&self, r: u8, g: u8, b: u8) -> BgDynColorDisplay<'_, Rgb, Self>

Sets the background color to an RGB value.
Source§

fn style(&self, style: Style) -> Styled<&Self>

Apply a runtime-determined style
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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.