Skip to main content

ParameterMap

Struct ParameterMap 

Source
pub struct ParameterMap(pub BTreeMap<ParameterKey, ParameterValue>);

Tuple Fields§

§0: BTreeMap<ParameterKey, ParameterValue>

Implementations§

Source§

impl ParameterMap

Source

pub fn new() -> Self

Source

pub fn parse<'a>( values: impl IntoIterator<Item = &'a Parameter>, ) -> Result<ParameterMap, String>

Parse a parameter vector into a parameter map

§Examples

No duplicates


let parameters = vec![
    Parameter {
        key: ParameterKey("key-a".to_string()),
        value: ParameterValue("value-a".to_string()),
    },
    Parameter {
        key: ParameterKey("key-b".to_string()),
        value: ParameterValue("value-b".to_string()),
    },
];

assert_eq!(
    Ok(ParameterMap(std::collections::BTreeMap::from([
        (
            ParameterKey(String::from("key-a")),
            ParameterValue(String::from("value-a"))
        ),
        (
            ParameterKey(String::from("key-b")),
            ParameterValue(String::from("value-b"))
        ),
    ]))),
    ParameterMap::parse(&parameters)
);

Present duplicate, errors on first duplicate


let parameters = vec![
    Parameter {
        key: ParameterKey("key-a".to_string()),
        value: ParameterValue("value-a".to_string()),
    },
    Parameter {
        key: ParameterKey("key-a".to_string()),
        value: ParameterValue("value-a".to_string()),
    },
    Parameter {
        key: ParameterKey("key-b".to_string()),
        value: ParameterValue("value-b".to_string()),
    },
    Parameter {
        key: ParameterKey("key-b".to_string()),
        value: ParameterValue("value-b".to_string()),
    },
];

assert_eq!(
    Err(String::from(
        "Parameter key: key-a is present multiple times"
    )),
    ParameterMap::parse(&parameters)
);
Source

pub fn merge(&self, other: &Self) -> Self

Merge parameter map into receiver

§Examples
let original = ParameterMap(std::collections::BTreeMap::from([
    (
        ParameterKey(String::from("key-a")),
        ParameterValue(String::from("value-a")),
    ),
    (
        ParameterKey(String::from("key-b")),
        ParameterValue(String::from("value-b1")),
    ),
]));

let extra = ParameterMap(std::collections::BTreeMap::from([
    (
        ParameterKey(String::from("key-b")),
        ParameterValue(String::from("value-b2")),
    ),
    (
        ParameterKey(String::from("key-c")),
        ParameterValue(String::from("value-c")),
    ),
]));

assert_eq!(
    ParameterMap(std::collections::BTreeMap::from([
        (
            ParameterKey(String::from("key-a")),
            ParameterValue(String::from("value-a"))
        ),
        (
            ParameterKey(String::from("key-b")),
            ParameterValue(String::from("value-b2"))
        ),
        (
            ParameterKey(String::from("key-c")),
            ParameterValue(String::from("value-c"))
        ),
    ])),
    original.merge(&extra)
)
Source

pub fn to_create_parameters(&self) -> Vec<Parameter>

To create parameters

§Examples
assert_eq!(
    vec![
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-a")
            .parameter_value("value-a")
            .build(),
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-b")
            .parameter_value("value-b")
            .build(),
    ],
    ParameterMap(std::collections::BTreeMap::from([
        (
            ParameterKey(String::from("key-a")),
            ParameterValue(String::from("value-a"))
        ),
        (
            ParameterKey(String::from("key-b")),
            ParameterValue(String::from("value-b"))
        ),
    ]))
    .to_create_parameters(),
)
Source

pub fn to_parameter_update_parameters( &self, existing_stack: &Stack, ) -> Vec<Parameter>

To parameter update parameters

§Examples

Some updates


let existing_stack = aws_sdk_cloudformation::types::Stack::builder()
    .set_parameters(Some(vec![
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-a")
            .parameter_value("value-a1")
            .build(),
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-b")
            .parameter_value("value-b1")
            .build(),
    ]))
    .build();

assert_eq!(
    vec![
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-a")
            .use_previous_value(true)
            .build(),
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-b")
            .parameter_value("value-b2")
            .build(),
    ],
    ParameterMap(std::collections::BTreeMap::from([(
        ParameterKey(String::from("key-b")),
        ParameterValue(String::from("value-b2"))
    ),]))
    .to_parameter_update_parameters(&existing_stack),
)
Source

pub fn to_template_update_parameters( &self, template_parameter_keys: &ParameterKeys, existing_stack_parameter_keys: &ParameterKeys, ) -> Vec<Parameter>

To template update parameters

§Examples

One parameter unchanged key-a, one parameter changed key-b, one parameter is probably new in the template key-c.


let template_parameter_keys = ParameterKeys::from([
    ParameterKey(String::from("key-a")),
    ParameterKey(String::from("key-b")),
    ParameterKey(String::from("key-c")),
]);

let existing_stack_parameter_keys = ParameterKeys::from([ParameterKey(String::from("key-a"))]);

assert_eq!(
    vec![
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-a")
            .use_previous_value(true)
            .build(),
        aws_sdk_cloudformation::types::Parameter::builder()
            .parameter_key("key-b")
            .parameter_value("value-b")
            .build(),
    ],
    ParameterMap(std::collections::BTreeMap::from([(
        ParameterKey(String::from("key-b")),
        ParameterValue(String::from("value-b"))
    ),]))
    .to_template_update_parameters(&template_parameter_keys, &existing_stack_parameter_keys),
)
Source

pub fn to_parameter_keys(&self) -> ParameterKeys

To parameter keys

§Examples

let template = Template::Plain {
    name: "example".into(),
    rendered: TemplateRendered {
        body: "ununsed".into(),
        format: TemplateFormat::JSON,
    },
    parameter_keys: ParameterKeys::from([ParameterKey(String::from("key-a"))]),
};

assert_eq!(
    ParameterKeys::from([
        ParameterKey(String::from("key-a")),
        ParameterKey(String::from("key-b")),
    ]),
    ParameterMap(std::collections::BTreeMap::from([
        (
            ParameterKey(String::from("key-a")),
            ParameterValue(String::from("value-a"))
        ),
        (
            ParameterKey(String::from("key-b")),
            ParameterValue(String::from("value-b"))
        ),
    ]))
    .to_parameter_keys()
)

Trait Implementations§

Source§

impl Debug for ParameterMap

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ParameterMap

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl PartialEq for ParameterMap

Source§

fn eq(&self, other: &ParameterMap) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for ParameterMap

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more