Skip to main content

ocpi_open_enum

Macro ocpi_open_enum 

Source
macro_rules! ocpi_open_enum {
    (
        $(#[$meta:meta])*
        $vis:vis enum $name:ident {
            $(
                $(#[$vmeta:meta])*
                $variant:ident = $wire:literal
            ),* $(,)?
        }
    ) => { ... };
}
Expand description

Defines an OCPI OpenEnum: known values plus a Custom variant that preserves anything else.

use ocpi_kit::ocpi_open_enum;

ocpi_open_enum! {
    /// Categories of environmental impact values.
    ///
    /// Spec: 2.3.0 §mod_locations_environmentalimpactcategory_enum
    pub enum EnvironmentalImpactCategory {
        /// Produced nuclear waste in grams per kilowatthour.
        NuclearWaste = "NUCLEAR_WASTE",
        /// Exhausted carbon dioxide in grams per kilowatthour.
        CarbonDioxide = "CARBON_DIOXIDE",
    }
}

let vendor: EnvironmentalImpactCategory = "nltnm-METHANE".parse().unwrap();
assert!(!vendor.is_known());
assert_eq!(vendor.as_str(), "nltnm-METHANE"); // never dropped, never rewritten