use alloc::string::String;
use core::fmt::Write;
#[zerovec::make_ule(BaseULE)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::measure::provider::si_prefix))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Default)]
#[repr(u8)]
pub enum Base {
#[default]
Decimal = 0,
Binary = 1,
}
#[zerovec::make_ule(SiPrefixULE)]
#[derive(Copy, Clone, Debug, PartialOrd, Ord, PartialEq, Eq, Default)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::measure::provider::si_prefix))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct SiPrefix {
pub power: i8,
pub base: Base,
}
impl SiPrefix {
pub(crate) fn append_short_representation(self, buff: &mut String) {
buff.push(match self.base {
Base::Decimal => 'D',
Base::Binary => 'B',
});
let _infallible = write!(buff, "{}", self.power);
}
}