use alloc::borrow::Cow;
use icu_pattern::{DoublePlaceholderPattern, SinglePlaceholderPattern};
use icu_provider::prelude::*;
use zerovec::VarZeroCow;
#[cfg(feature = "compiled_data")]
pub use crate::provider::Baked;
icu_provider::data_marker!(
PercentEssentialsV1,
PercentEssentials<'static>
);
#[derive(Clone, PartialEq, Debug, yoke::Yokeable, zerofrom::ZeroFrom)]
#[cfg_attr(feature = "datagen", derive(serde::Serialize, databake::Bake))]
#[cfg_attr(feature = "datagen", databake(path = icu_experimental::dimension::provider::percent))]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub struct PercentEssentials<'data> {
#[cfg_attr(feature = "serde", serde(borrow))]
pub signed_pattern: VarZeroCow<'data, DoublePlaceholderPattern>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub unsigned_pattern: VarZeroCow<'data, SinglePlaceholderPattern>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub approximately_sign: Cow<'data, str>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub minus_sign: Cow<'data, str>,
#[cfg_attr(feature = "serde", serde(borrow))]
pub plus_sign: Cow<'data, str>,
}
icu_provider::data_struct!(PercentEssentials<'_>, #[cfg(feature = "datagen")]);