#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::fmt::Debug)]
pub struct DatasetLabelDescription {
    #[doc(hidden)]
    pub label_name: std::option::Option<std::string::String>,
    #[doc(hidden)]
    pub label_stats: std::option::Option<crate::types::DatasetLabelStats>,
}
impl DatasetLabelDescription {
    pub fn label_name(&self) -> std::option::Option<&str> {
        self.label_name.as_deref()
    }
    pub fn label_stats(&self) -> std::option::Option<&crate::types::DatasetLabelStats> {
        self.label_stats.as_ref()
    }
}
impl DatasetLabelDescription {
    pub fn builder() -> crate::types::builders::DatasetLabelDescriptionBuilder {
        crate::types::builders::DatasetLabelDescriptionBuilder::default()
    }
}
#[non_exhaustive]
#[derive(std::clone::Clone, std::cmp::PartialEq, std::default::Default, std::fmt::Debug)]
pub struct DatasetLabelDescriptionBuilder {
    pub(crate) label_name: std::option::Option<std::string::String>,
    pub(crate) label_stats: std::option::Option<crate::types::DatasetLabelStats>,
}
impl DatasetLabelDescriptionBuilder {
    pub fn label_name(mut self, input: impl Into<std::string::String>) -> Self {
        self.label_name = Some(input.into());
        self
    }
    pub fn set_label_name(mut self, input: std::option::Option<std::string::String>) -> Self {
        self.label_name = input;
        self
    }
    pub fn label_stats(mut self, input: crate::types::DatasetLabelStats) -> Self {
        self.label_stats = Some(input);
        self
    }
    pub fn set_label_stats(
        mut self,
        input: std::option::Option<crate::types::DatasetLabelStats>,
    ) -> Self {
        self.label_stats = input;
        self
    }
    pub fn build(self) -> crate::types::DatasetLabelDescription {
        crate::types::DatasetLabelDescription {
            label_name: self.label_name,
            label_stats: self.label_stats,
        }
    }
}