use super::si_prefix::SiPrefix;
use alloc::string::String;
use core::fmt::Write;
#[zerovec::make_ule(SingleUnitULE)]
#[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::single_unit))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct SingleUnit {
pub power: i8,
pub si_prefix: SiPrefix,
pub unit_id: UnitID,
}
impl SingleUnit {
pub(crate) fn append_short_representation(self, buff: &mut String) {
if self.power != 1 {
buff.push('P');
let _infallible = write!(buff, "{}", self.power);
}
if self.si_prefix.power != 0 {
self.si_prefix.append_short_representation(buff);
}
buff.push('I');
let _infallible = write!(buff, "{}", self.unit_id);
}
}
pub type UnitID = u16;