Skip to main content

Bo4eEnum

Trait Bo4eEnum 

Source
pub trait Bo4eEnum:
    Sealed
    + Copy
    + Sized
    + 'static {
    const VARIANTS: &'static [Self];
    const COUNT: usize;

    // Required methods
    fn as_wire(&self) -> &'static str;
    fn from_wire(s: &str) -> Result<Self, UnknownVariant>;
    fn is_unknown(&self) -> bool;

    // Provided method
    fn is_known(&self) -> bool { ... }
}
Available on crate feature versioned only.
Expand description

Uniform introspection & strict-parsing surface implemented by every generated BO4E enum (Zaehlertyp, Marktrolle, BdewArtikelnummer, …).

Every BO4E enum carries an Unknown catch-all, so the serde / FromStr path never fails on an unrecognized wire value — right for forward compatibility, wrong at an ingest boundary. These members close that gap without the strum feature.

They are inherent methods too, so importing the trait matters only for code generic over the enum type.

§Example

use rubo4e::{current::Zaehlertyp, Bo4eEnum};

// Introspection without `strum`:
assert_eq!(Zaehlertyp::COUNT, Zaehlertyp::VARIANTS.len());

// Strict parsing at the ingest boundary:
assert_eq!(Zaehlertyp::from_wire("WASSERZAEHLER"), Ok(Zaehlertyp::Wasserzaehler));
assert!(Zaehlertyp::from_wire("NOT_A_REAL_VALUE").is_err());

// Detect lenient-decode fall-through:
let z: Zaehlertyp = serde_json::from_str("\"BOGUS\"").unwrap();
assert!(z.is_unknown());

§Derived traits on every BO4E enum

Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash.

Ord is declaration order, not a business ranking — schema order, with Unknown last. Total, so BTreeMap and sort() work, but a schema release may reorder the values: never persist a sort key derived from it. Compare as_wire where the order must be stable.

§Sealed trait

Bo4eEnum is sealed — it cannot be implemented outside this crate.

Required Associated Constants§

Source

const VARIANTS: &'static [Self]

All variants defined by the BO4E schema, in declaration order.

Excludes the synthetic Unknown catch-all, so this is exactly the set of values that appear on the wire.

Source

const COUNT: usize

Number of schema-defined variants (equal to VARIANTS.len()), excluding the Unknown catch-all. Stable for a given schema version — use it to drift-guard hand-maintained variant counts.

Required Methods§

Source

fn as_wire(&self) -> &'static str

Returns the canonical BO4E wire string (SCREAMING_SNAKE_CASE) for this value.

Source

fn from_wire(s: &str) -> Result<Self, UnknownVariant>

Strictly parses a BO4E wire string, returning Err for any value not defined in this schema version — including the literal "UNKNOWN".

This is the opt-in strict counterpart to the lenient serde / FromStr path, which maps unrecognized values to the Unknown catch-all.

Source

fn is_unknown(&self) -> bool

Returns true if this value is the forward-compatibility Unknown catch-all — i.e. an out-of-schema value produced by a lenient decode.

Provided Methods§

Source

fn is_known(&self) -> bool

Returns true if this value is a known, schema-defined variant.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

Source§

impl Bo4eEnum for AbgabeArt

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Abwicklungsmodell

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Aggregationsverantwortung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Angebotsstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Anrede

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for AufAbschlagstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for AufAbschlagsziel

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Ausschreibungsportal

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Ausschreibungsstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Ausschreibungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for BdewArtikelnummer

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Befestigungsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Bemessungsgroesse

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Bilanzierungsmethode

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for BoTyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for ComTyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Dienstleistungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for EMobilitaetsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Energierichtung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Erzeugungsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Fallgruppenzuordnung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Gasqualitaet

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Gebiettyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Geraeteklasse

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Geraetetyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Geschaeftspartnerrolle

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Kalkulationsmethode

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Kontaktart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Kostenklasse

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Kundengruppe

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for KundengruppeKa

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Kundentyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Landescode

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Leistungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Marktrolle

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Medium

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Mengeneinheit

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Messart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Messgroesse

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Messpreistyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Messwertstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Messwertstatuszusatz

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Netzebene

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for NetznutzungRechnungsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for NetznutzungRechnungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Oekolabel

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Oekozertifikat

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Operator

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Organisationstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Preisgarantietyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Preismodell

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Preisreferenz

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Preisstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Preistyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Profilart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Profiltyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Profilverfahren

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Prognosegrundlage

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Rechnungslegung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Rechnungsstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Rechnungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Regionskriterium

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Registeranzahl

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Rollencodetyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Sparte

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Speicherart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Steuerart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for SteuerkanalLeistungsbeschreibung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Tarifkalkulationsmethode

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Tarifmerkmal

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Tariftyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Tarifzeit

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for TechnischeRessourceNutzung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for TechnischeRessourceVerbrauchsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Themengebiet

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Titel

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Verbrauchsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Vertragsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Vertragsform

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Vertragsstatus

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Verwendungszweck

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Voraussetzungen

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Waehrungscode

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Waehrungseinheit

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Waermenutzung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for WahlrechtPrognosegrundlage

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Wiederholungstyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Zaehlerauspraegung

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Zaehlergroesse

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Zaehlertyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for ZaehlertypSpezifikation

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Zahlungsart

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT

Source§

impl Bo4eEnum for Zeitreihentyp

Available on crate features json or versioned only.
Source§

const VARIANTS: &'static [Self] = Self::VARIANTS

Source§

const COUNT: usize = Self::COUNT