// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>A list of filters to apply to the conformance pack compliance score result set.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct ConformancePackComplianceScoresFilters {
    /// <p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>
    pub conformance_pack_names: ::std::vec::Vec<::std::string::String>,
}
impl ConformancePackComplianceScoresFilters {
    /// <p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>
    pub fn conformance_pack_names(&self) -> &[::std::string::String] {
        use std::ops::Deref;
        self.conformance_pack_names.deref()
    }
}
impl ConformancePackComplianceScoresFilters {
    /// Creates a new builder-style object to manufacture [`ConformancePackComplianceScoresFilters`](crate::types::ConformancePackComplianceScoresFilters).
    pub fn builder() -> crate::types::builders::ConformancePackComplianceScoresFiltersBuilder {
        crate::types::builders::ConformancePackComplianceScoresFiltersBuilder::default()
    }
}

/// A builder for [`ConformancePackComplianceScoresFilters`](crate::types::ConformancePackComplianceScoresFilters).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct ConformancePackComplianceScoresFiltersBuilder {
    pub(crate) conformance_pack_names: ::std::option::Option<::std::vec::Vec<::std::string::String>>,
}
impl ConformancePackComplianceScoresFiltersBuilder {
    /// Appends an item to `conformance_pack_names`.
    ///
    /// To override the contents of this collection use [`set_conformance_pack_names`](Self::set_conformance_pack_names).
    ///
    /// <p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>
    pub fn conformance_pack_names(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        let mut v = self.conformance_pack_names.unwrap_or_default();
        v.push(input.into());
        self.conformance_pack_names = ::std::option::Option::Some(v);
        self
    }
    /// <p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>
    pub fn set_conformance_pack_names(mut self, input: ::std::option::Option<::std::vec::Vec<::std::string::String>>) -> Self {
        self.conformance_pack_names = input;
        self
    }
    /// <p>The names of the conformance packs whose compliance scores you want to include in the conformance pack compliance score result set. You can include up to 25 conformance packs in the <code>ConformancePackNames</code> array of strings, each with a character limit of 256 characters for the conformance pack name.</p>
    pub fn get_conformance_pack_names(&self) -> &::std::option::Option<::std::vec::Vec<::std::string::String>> {
        &self.conformance_pack_names
    }
    /// Consumes the builder and constructs a [`ConformancePackComplianceScoresFilters`](crate::types::ConformancePackComplianceScoresFilters).
    /// This method will fail if any of the following fields are not set:
    /// - [`conformance_pack_names`](crate::types::builders::ConformancePackComplianceScoresFiltersBuilder::conformance_pack_names)
    pub fn build(
        self,
    ) -> ::std::result::Result<crate::types::ConformancePackComplianceScoresFilters, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::ConformancePackComplianceScoresFilters {
            conformance_pack_names: self.conformance_pack_names.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "conformance_pack_names",
                    "conformance_pack_names was not specified but it is required when building ConformancePackComplianceScoresFilters",
                )
            })?,
        })
    }
}
