1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>A structure that defines one launch group in a launch. A launch group is a variation of the feature that you are including in the launch.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct LaunchGroupConfig {
    /// <p>A name for this launch group.</p>
    pub name: ::std::string::String,
    /// <p>A description of the launch group.</p>
    pub description: ::std::option::Option<::std::string::String>,
    /// <p>The feature that this launch is using.</p>
    pub feature: ::std::string::String,
    /// <p>The feature variation to use for this launch group.</p>
    pub variation: ::std::string::String,
}
impl LaunchGroupConfig {
    /// <p>A name for this launch group.</p>
    pub fn name(&self) -> &str {
        use std::ops::Deref;
        self.name.deref()
    }
    /// <p>A description of the launch group.</p>
    pub fn description(&self) -> ::std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The feature that this launch is using.</p>
    pub fn feature(&self) -> &str {
        use std::ops::Deref;
        self.feature.deref()
    }
    /// <p>The feature variation to use for this launch group.</p>
    pub fn variation(&self) -> &str {
        use std::ops::Deref;
        self.variation.deref()
    }
}
impl LaunchGroupConfig {
    /// Creates a new builder-style object to manufacture [`LaunchGroupConfig`](crate::types::LaunchGroupConfig).
    pub fn builder() -> crate::types::builders::LaunchGroupConfigBuilder {
        crate::types::builders::LaunchGroupConfigBuilder::default()
    }
}

/// A builder for [`LaunchGroupConfig`](crate::types::LaunchGroupConfig).
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
pub struct LaunchGroupConfigBuilder {
    pub(crate) name: ::std::option::Option<::std::string::String>,
    pub(crate) description: ::std::option::Option<::std::string::String>,
    pub(crate) feature: ::std::option::Option<::std::string::String>,
    pub(crate) variation: ::std::option::Option<::std::string::String>,
}
impl LaunchGroupConfigBuilder {
    /// <p>A name for this launch group.</p>
    /// This field is required.
    pub fn name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.name = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A name for this launch group.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.name = input;
        self
    }
    /// <p>A name for this launch group.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.name
    }
    /// <p>A description of the launch group.</p>
    pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.description = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>A description of the launch group.</p>
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.description = input;
        self
    }
    /// <p>A description of the launch group.</p>
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        &self.description
    }
    /// <p>The feature that this launch is using.</p>
    /// This field is required.
    pub fn feature(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.feature = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The feature that this launch is using.</p>
    pub fn set_feature(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.feature = input;
        self
    }
    /// <p>The feature that this launch is using.</p>
    pub fn get_feature(&self) -> &::std::option::Option<::std::string::String> {
        &self.feature
    }
    /// <p>The feature variation to use for this launch group.</p>
    /// This field is required.
    pub fn variation(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.variation = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The feature variation to use for this launch group.</p>
    pub fn set_variation(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.variation = input;
        self
    }
    /// <p>The feature variation to use for this launch group.</p>
    pub fn get_variation(&self) -> &::std::option::Option<::std::string::String> {
        &self.variation
    }
    /// Consumes the builder and constructs a [`LaunchGroupConfig`](crate::types::LaunchGroupConfig).
    /// This method will fail if any of the following fields are not set:
    /// - [`name`](crate::types::builders::LaunchGroupConfigBuilder::name)
    /// - [`feature`](crate::types::builders::LaunchGroupConfigBuilder::feature)
    /// - [`variation`](crate::types::builders::LaunchGroupConfigBuilder::variation)
    pub fn build(self) -> ::std::result::Result<crate::types::LaunchGroupConfig, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::LaunchGroupConfig {
            name: self.name.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "name",
                    "name was not specified but it is required when building LaunchGroupConfig",
                )
            })?,
            description: self.description,
            feature: self.feature.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "feature",
                    "feature was not specified but it is required when building LaunchGroupConfig",
                )
            })?,
            variation: self.variation.ok_or_else(|| {
                ::aws_smithy_types::error::operation::BuildError::missing_field(
                    "variation",
                    "variation was not specified but it is required when building LaunchGroupConfig",
                )
            })?,
        })
    }
}