#[non_exhaustive]pub enum AudioNormalizationAlgorithm {
ItuBs17701,
ItuBs17702,
ItuBs17703,
ItuBs17704,
Unknown(UnknownVariantValue),
}
Expand description
When writing a match expression against AudioNormalizationAlgorithm
, 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 audionormalizationalgorithm = unimplemented!();
match audionormalizationalgorithm {
AudioNormalizationAlgorithm::ItuBs17701 => { /* ... */ },
AudioNormalizationAlgorithm::ItuBs17702 => { /* ... */ },
AudioNormalizationAlgorithm::ItuBs17703 => { /* ... */ },
AudioNormalizationAlgorithm::ItuBs17704 => { /* ... */ },
other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
_ => { /* ... */ },
}
The above code demonstrates that when audionormalizationalgorithm
represents
NewFeature
, the execution path will lead to the second last match arm,
even though the enum does not contain a variant AudioNormalizationAlgorithm::NewFeature
in the current version of SDK. The reason is that the variable other
,
created by the @
operator, is bound to
AudioNormalizationAlgorithm::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 AudioNormalizationAlgorithm::NewFeature
is defined.
Specifically, when audionormalizationalgorithm
represents NewFeature
,
the execution path will hit the second last match arm as before by virtue of
calling as_str
on AudioNormalizationAlgorithm::NewFeature
also yielding "NewFeature"
.
Explicitly matching on the Unknown
variant should
be avoided for two reasons:
- The inner data
UnknownVariantValue
is opaque, and no further information can be extracted. - It might inadvertently shadow other intended match arms. Choose one of the following audio normalization algorithms: ITU-R BS.1770-1: Ungated loudness. A measurement of ungated average loudness for an entire piece of content, suitable for measurement of short-form content under ATSC recommendation A/85. Supports up to 5.1 audio channels. ITU-R BS.1770-2: Gated loudness. A measurement of gated average loudness compliant with the requirements of EBU-R128. Supports up to 5.1 audio channels. ITU-R BS.1770-3: Modified peak. The same loudness measurement algorithm as 1770-2, with an updated true peak measurement. ITU-R BS.1770-4: Higher channel count. Allows for more audio channels than the other algorithms, including configurations such as 7.1.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
ItuBs17701
ItuBs17702
ItuBs17703
ItuBs17704
Unknown(UnknownVariantValue)
Unknown
. See the docs on this enum for the correct way to handle unknown variants.Unknown
contains new variants that have been added since this code was generated.
Implementations§
source§impl AudioNormalizationAlgorithm
impl AudioNormalizationAlgorithm
sourcepub fn try_parse(value: &str) -> Result<Self, UnknownVariantError>
pub fn try_parse(value: &str) -> Result<Self, UnknownVariantError>
Parses the enum value while disallowing unknown variants.
Unknown variants will result in an error.
Trait Implementations§
source§impl AsRef<str> for AudioNormalizationAlgorithm
impl AsRef<str> for AudioNormalizationAlgorithm
source§impl Clone for AudioNormalizationAlgorithm
impl Clone for AudioNormalizationAlgorithm
source§fn clone(&self) -> AudioNormalizationAlgorithm
fn clone(&self) -> AudioNormalizationAlgorithm
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for AudioNormalizationAlgorithm
impl Debug for AudioNormalizationAlgorithm
source§impl From<&str> for AudioNormalizationAlgorithm
impl From<&str> for AudioNormalizationAlgorithm
source§impl Hash for AudioNormalizationAlgorithm
impl Hash for AudioNormalizationAlgorithm
source§impl Ord for AudioNormalizationAlgorithm
impl Ord for AudioNormalizationAlgorithm
source§fn cmp(&self, other: &AudioNormalizationAlgorithm) -> Ordering
fn cmp(&self, other: &AudioNormalizationAlgorithm) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for AudioNormalizationAlgorithm
impl PartialEq for AudioNormalizationAlgorithm
source§fn eq(&self, other: &AudioNormalizationAlgorithm) -> bool
fn eq(&self, other: &AudioNormalizationAlgorithm) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for AudioNormalizationAlgorithm
impl PartialOrd for AudioNormalizationAlgorithm
source§fn partial_cmp(&self, other: &AudioNormalizationAlgorithm) -> Option<Ordering>
fn partial_cmp(&self, other: &AudioNormalizationAlgorithm) -> 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 AudioNormalizationAlgorithm
impl StructuralPartialEq for AudioNormalizationAlgorithm
Auto Trait Implementations§
impl Freeze for AudioNormalizationAlgorithm
impl RefUnwindSafe for AudioNormalizationAlgorithm
impl Send for AudioNormalizationAlgorithm
impl Sync for AudioNormalizationAlgorithm
impl Unpin for AudioNormalizationAlgorithm
impl UnwindSafe for AudioNormalizationAlgorithm
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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