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 treatment in an experiment. A treatment is a variation of the feature that you are including in the experiment.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct TreatmentConfig {
    /// <p>A name for this treatment.</p>
    pub name: ::std::string::String,
    /// <p>A description for this treatment.</p>
    pub description: ::std::option::Option<::std::string::String>,
    /// <p>The feature that this experiment is testing.</p>
    pub feature: ::std::string::String,
    /// <p>The name of the variation to use as this treatment in the experiment.</p>
    pub variation: ::std::string::String,
}
impl TreatmentConfig {
    /// <p>A name for this treatment.</p>
    pub fn name(&self) -> &str {
        use std::ops::Deref;
        self.name.deref()
    }
    /// <p>A description for this treatment.</p>
    pub fn description(&self) -> ::std::option::Option<&str> {
        self.description.as_deref()
    }
    /// <p>The feature that this experiment is testing.</p>
    pub fn feature(&self) -> &str {
        use std::ops::Deref;
        self.feature.deref()
    }
    /// <p>The name of the variation to use as this treatment in the experiment.</p>
    pub fn variation(&self) -> &str {
        use std::ops::Deref;
        self.variation.deref()
    }
}
impl TreatmentConfig {
    /// Creates a new builder-style object to manufacture [`TreatmentConfig`](crate::types::TreatmentConfig).
    pub fn builder() -> crate::types::builders::TreatmentConfigBuilder {
        crate::types::builders::TreatmentConfigBuilder::default()
    }
}

/// A builder for [`TreatmentConfig`](crate::types::TreatmentConfig).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct TreatmentConfigBuilder {
    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 TreatmentConfigBuilder {
    /// <p>A name for this treatment.</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 treatment.</p>
    pub fn set_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.name = input;
        self
    }
    /// <p>A name for this treatment.</p>
    pub fn get_name(&self) -> &::std::option::Option<::std::string::String> {
        &self.name
    }
    /// <p>A description for this treatment.</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 for this treatment.</p>
    pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.description = input;
        self
    }
    /// <p>A description for this treatment.</p>
    pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
        &self.description
    }
    /// <p>The feature that this experiment is testing.</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 experiment is testing.</p>
    pub fn set_feature(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.feature = input;
        self
    }
    /// <p>The feature that this experiment is testing.</p>
    pub fn get_feature(&self) -> &::std::option::Option<::std::string::String> {
        &self.feature
    }
    /// <p>The name of the variation to use as this treatment in the experiment.</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 name of the variation to use as this treatment in the experiment.</p>
    pub fn set_variation(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.variation = input;
        self
    }
    /// <p>The name of the variation to use as this treatment in the experiment.</p>
    pub fn get_variation(&self) -> &::std::option::Option<::std::string::String> {
        &self.variation
    }
    /// Consumes the builder and constructs a [`TreatmentConfig`](crate::types::TreatmentConfig).
    /// This method will fail if any of the following fields are not set:
    /// - [`name`](crate::types::builders::TreatmentConfigBuilder::name)
    /// - [`feature`](crate::types::builders::TreatmentConfigBuilder::feature)
    /// - [`variation`](crate::types::builders::TreatmentConfigBuilder::variation)
    pub fn build(self) -> ::std::result::Result<crate::types::TreatmentConfig, ::aws_smithy_types::error::operation::BuildError> {
        ::std::result::Result::Ok(crate::types::TreatmentConfig {
            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 TreatmentConfig",
                )
            })?,
            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 TreatmentConfig",
                )
            })?,
            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 TreatmentConfig",
                )
            })?,
        })
    }
}