pub struct ElementRef { /* private fields */ }Expand description
Reference to a data element within a segment definition.
Fields are private to enforce the one-based position invariant through the
ElementRef::new constructor. Use ElementRef::new for a simple data
element and ElementRef::composite for a composite whose components are
themselves named (panics at compile time when position == 0).
Use OwnedElementRef for runtime-constructed element refs.
Implementations§
Source§impl ElementRef
impl ElementRef
Sourcepub const fn new(
position: u8,
data_element: &'static str,
status: Status,
max_repeat: u8,
) -> Self
pub const fn new( position: u8, data_element: &'static str, status: Status, max_repeat: u8, ) -> Self
Construct an ElementRef for a simple data element.
position must be ≥ 1 (one-based). When called in a const context
(e.g. inside a static array initialiser), a zero position causes a
compile-time error. At runtime it panics.
Use composite when the element is a composite whose
components carry their own UN/EDIFACT identifiers.
§Panics
Panics if position == 0.
§Example
use edifact_rs::{ElementRef, Status};
const BGM_1001: ElementRef = ElementRef::new(1, "1001", Status::Mandatory, 1);Sourcepub const fn composite(
position: u8,
data_element: &'static str,
status: Status,
max_repeat: u8,
components: &'static [ComponentRef],
) -> Self
pub const fn composite( position: u8, data_element: &'static str, status: Status, max_repeat: u8, components: &'static [ComponentRef], ) -> Self
Construct an ElementRef for a composite data element with named components.
Declaring components is what lets code-addressed access reach inside a
composite: value_by_code(&DTM, "2380") resolves to element 1,
component 2 without the caller counting positions. Declared components
also make the mandatory-component check in DirectoryValidator active
for this element.
§Panics
Panics if position == 0.
§Example
use edifact_rs::{ComponentRef, ElementRef, Status};
static C507: &[ComponentRef] = &[
ComponentRef::new(1, "2005", Status::Mandatory),
ComponentRef::new(2, "2380", Status::Conditional),
ComponentRef::new(3, "2379", Status::Conditional),
];
const DTM_C507: ElementRef =
ElementRef::composite(1, "C507", Status::Mandatory, 1, C507);Sourcepub const fn data_element(&self) -> &'static str
pub const fn data_element(&self) -> &'static str
UN/EDIFACT data element identifier.
Sourcepub const fn max_repeat(&self) -> u8
pub const fn max_repeat(&self) -> u8
Maximum repetition count for this element.
Sourcepub const fn components(&self) -> &'static [ComponentRef]
pub const fn components(&self) -> &'static [ComponentRef]
Component definitions; empty when this is a simple data element.
Sourcepub const fn with_repr(self, repr: Repr) -> Self
pub const fn with_repr(self, repr: Repr) -> Self
Attach the directory’s representation for a simple data element.
A composite carries its representations on the components instead, so
this is ignored when components is non-empty.
Sourcepub const fn repr(&self) -> Option<Repr>
pub const fn repr(&self) -> Option<Repr>
The declared representation, if the definition states one.
Sourcepub const fn with_repr_by_syntax_version(
self,
up_to_v3: Repr,
from_v4: Repr,
) -> Self
pub const fn with_repr_by_syntax_version( self, up_to_v3: Repr, from_v4: Repr, ) -> Self
Declare a representation that changed between syntax versions.
The service directory has exactly one such position: S004 DE 0017, the
date of preparation. Version 3 transfers YYMMDD (n6); version 4
widened it to CCYYMMDD (n8) to be year-2000 correct. It is the only
place where version 4 is not a superset of version 3.
Declaring both keeps each version checked exactly. Collapsing them into
n..8 would have accepted a six-digit date in a version 4 interchange
and a seven-digit one in either — validating neither version correctly.
The syntax version comes from UNB S001 DE 0002. When it cannot be
determined — validating a bare message window, say — both are
accepted, because guessing would reject conformant data.
Sourcepub const fn repr_from_v4(&self) -> Option<Repr>
pub const fn repr_from_v4(&self) -> Option<Repr>
The representation used from syntax version 4 onward, when it differs.
Trait Implementations§
Source§impl Clone for ElementRef
impl Clone for ElementRef
Source§fn clone(&self) -> ElementRef
fn clone(&self) -> ElementRef
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ElementRef
Auto Trait Implementations§
impl Freeze for ElementRef
impl RefUnwindSafe for ElementRef
impl Send for ElementRef
impl Sync for ElementRef
impl Unpin for ElementRef
impl UnsafeUnpin for ElementRef
impl UnwindSafe for ElementRef
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more