#[non_exhaustive]pub enum NoiseReducerFilter {
Bilateral,
Conserve,
Gaussian,
Lanczos,
Mean,
Sharpen,
Spatial,
Temporal,
Unknown(UnknownVariantValue),
}
Expand description
When writing a match expression against NoiseReducerFilter
, 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 noisereducerfilter = unimplemented!();
match noisereducerfilter {
NoiseReducerFilter::Bilateral => { /* ... */ },
NoiseReducerFilter::Conserve => { /* ... */ },
NoiseReducerFilter::Gaussian => { /* ... */ },
NoiseReducerFilter::Lanczos => { /* ... */ },
NoiseReducerFilter::Mean => { /* ... */ },
NoiseReducerFilter::Sharpen => { /* ... */ },
NoiseReducerFilter::Spatial => { /* ... */ },
NoiseReducerFilter::Temporal => { /* ... */ },
other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
_ => { /* ... */ },
}
The above code demonstrates that when noisereducerfilter
represents
NewFeature
, the execution path will lead to the second last match arm,
even though the enum does not contain a variant NoiseReducerFilter::NewFeature
in the current version of SDK. The reason is that the variable other
,
created by the @
operator, is bound to
NoiseReducerFilter::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 NoiseReducerFilter::NewFeature
is defined.
Specifically, when noisereducerfilter
represents NewFeature
,
the execution path will hit the second last match arm as before by virtue of
calling as_str
on NoiseReducerFilter::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. Use Noise reducer filter to select one of the following spatial image filtering functions. To use this setting, you must also enable Noise reducer. * Bilateral preserves edges while reducing noise. * Mean (softest), Gaussian, Lanczos, and Sharpen (sharpest) do convolution filtering. * Conserve does min/max noise reduction. * Spatial does frequency-domain filtering based on JND principles. * Temporal optimizes video quality for complex motion.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Bilateral
Conserve
Gaussian
Lanczos
Mean
Sharpen
Spatial
Temporal
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 NoiseReducerFilter
impl NoiseReducerFilter
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 NoiseReducerFilter
impl AsRef<str> for NoiseReducerFilter
source§impl Clone for NoiseReducerFilter
impl Clone for NoiseReducerFilter
source§fn clone(&self) -> NoiseReducerFilter
fn clone(&self) -> NoiseReducerFilter
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for NoiseReducerFilter
impl Debug for NoiseReducerFilter
source§impl Display for NoiseReducerFilter
impl Display for NoiseReducerFilter
source§impl From<&str> for NoiseReducerFilter
impl From<&str> for NoiseReducerFilter
source§impl FromStr for NoiseReducerFilter
impl FromStr for NoiseReducerFilter
source§impl Hash for NoiseReducerFilter
impl Hash for NoiseReducerFilter
source§impl Ord for NoiseReducerFilter
impl Ord for NoiseReducerFilter
source§fn cmp(&self, other: &NoiseReducerFilter) -> Ordering
fn cmp(&self, other: &NoiseReducerFilter) -> 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 NoiseReducerFilter
impl PartialEq for NoiseReducerFilter
source§fn eq(&self, other: &NoiseReducerFilter) -> bool
fn eq(&self, other: &NoiseReducerFilter) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for NoiseReducerFilter
impl PartialOrd for NoiseReducerFilter
source§fn partial_cmp(&self, other: &NoiseReducerFilter) -> Option<Ordering>
fn partial_cmp(&self, other: &NoiseReducerFilter) -> 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 NoiseReducerFilter
impl StructuralPartialEq for NoiseReducerFilter
Auto Trait Implementations§
impl Freeze for NoiseReducerFilter
impl RefUnwindSafe for NoiseReducerFilter
impl Send for NoiseReducerFilter
impl Sync for NoiseReducerFilter
impl Unpin for NoiseReducerFilter
impl UnwindSafe for NoiseReducerFilter
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