#[non_exhaustive]
pub enum AggregatedSourceType {
Account,
Organization,
Unknown(UnknownVariantValue),
}Expand description
When writing a match expression against AggregatedSourceType, it is important to ensure
your code is forward-compatible. That is, if a match arm handles a case for a
feature that is supported by the service but has not been represented as an enum
variant in a current version of SDK, your code should continue to work when you
upgrade SDK to a future version in which the enum does include a variant for that
feature.
Here is an example of how you can make a match expression forward-compatible:
# let aggregatedsourcetype = unimplemented!();
match aggregatedsourcetype {
AggregatedSourceType::Account => { /* ... */ },
AggregatedSourceType::Organization => { /* ... */ },
other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
_ => { /* ... */ },
}
The above code demonstrates that when aggregatedsourcetype represents
NewFeature, the execution path will lead to the second last match arm,
even though the enum does not contain a variant AggregatedSourceType::NewFeature
in the current version of SDK. The reason is that the variable other,
created by the @ operator, is bound to
AggregatedSourceType::Unknown(UnknownVariantValue("NewFeature".to_owned()))
and calling as_str on it yields "NewFeature".
This match expression is forward-compatible when executed with a newer
version of SDK where the variant AggregatedSourceType::NewFeature is defined.
Specifically, when aggregatedsourcetype represents NewFeature,
the execution path will hit the second last match arm as before by virtue of
calling as_str on AggregatedSourceType::NewFeature also yielding "NewFeature".
Explicitly matching on the Unknown variant should
be avoided for two reasons:
- The inner data
UnknownVariantValueis opaque, and no further information can be extracted. - It might inadvertently shadow other intended match arms.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Account
Organization
Unknown(UnknownVariantValue)
Unknown contains new variants that have been added since this code was generated.
Implementations§
Trait Implementations§
source§impl AsRef<str> for AggregatedSourceType
impl AsRef<str> for AggregatedSourceType
source§impl Clone for AggregatedSourceType
impl Clone for AggregatedSourceType
source§fn clone(&self) -> AggregatedSourceType
fn clone(&self) -> AggregatedSourceType
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for AggregatedSourceType
impl Debug for AggregatedSourceType
source§impl From<&str> for AggregatedSourceType
impl From<&str> for AggregatedSourceType
source§impl FromStr for AggregatedSourceType
impl FromStr for AggregatedSourceType
source§impl Hash for AggregatedSourceType
impl Hash for AggregatedSourceType
source§impl Ord for AggregatedSourceType
impl Ord for AggregatedSourceType
source§fn cmp(&self, other: &AggregatedSourceType) -> Ordering
fn cmp(&self, other: &AggregatedSourceType) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq<AggregatedSourceType> for AggregatedSourceType
impl PartialEq<AggregatedSourceType> for AggregatedSourceType
source§fn eq(&self, other: &AggregatedSourceType) -> bool
fn eq(&self, other: &AggregatedSourceType) -> bool
source§impl PartialOrd<AggregatedSourceType> for AggregatedSourceType
impl PartialOrd<AggregatedSourceType> for AggregatedSourceType
source§fn partial_cmp(&self, other: &AggregatedSourceType) -> Option<Ordering>
fn partial_cmp(&self, other: &AggregatedSourceType) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read moreimpl Eq for AggregatedSourceType
impl StructuralEq for AggregatedSourceType
impl StructuralPartialEq for AggregatedSourceType
Auto Trait Implementations§
impl RefUnwindSafe for AggregatedSourceType
impl Send for AggregatedSourceType
impl Sync for AggregatedSourceType
impl Unpin for AggregatedSourceType
impl UnwindSafe for AggregatedSourceType
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.