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