#[non_exhaustive]pub enum ColorSpaceUsage {
Fallback,
Force,
Unknown(UnknownVariantValue),
}
Expand description
When writing a match expression against ColorSpaceUsage
, 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 colorspaceusage = unimplemented!();
match colorspaceusage {
ColorSpaceUsage::Fallback => { /* ... */ },
ColorSpaceUsage::Force => { /* ... */ },
other @ _ if other.as_str() == "NewFeature" => { /* handles a case for `NewFeature` */ },
_ => { /* ... */ },
}
The above code demonstrates that when colorspaceusage
represents
NewFeature
, the execution path will lead to the second last match arm,
even though the enum does not contain a variant ColorSpaceUsage::NewFeature
in the current version of SDK. The reason is that the variable other
,
created by the @
operator, is bound to
ColorSpaceUsage::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 ColorSpaceUsage::NewFeature
is defined.
Specifically, when colorspaceusage
represents NewFeature
,
the execution path will hit the second last match arm as before by virtue of
calling as_str
on ColorSpaceUsage::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. There are two sources for color metadata, the input file and the job input settings Color space and HDR master display information settings. The Color space usage setting determines which takes precedence. Choose Force to use color metadata from the input job settings. If you don’t specify values for those settings, the service defaults to using metadata from your input. FALLBACK - Choose Fallback to use color metadata from the source when it is present. If there’s no color metadata in your input file, the service defaults to using values you specify in the input settings.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Fallback
Force
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 ColorSpaceUsage
impl ColorSpaceUsage
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 ColorSpaceUsage
impl AsRef<str> for ColorSpaceUsage
source§impl Clone for ColorSpaceUsage
impl Clone for ColorSpaceUsage
source§fn clone(&self) -> ColorSpaceUsage
fn clone(&self) -> ColorSpaceUsage
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for ColorSpaceUsage
impl Debug for ColorSpaceUsage
source§impl Display for ColorSpaceUsage
impl Display for ColorSpaceUsage
source§impl From<&str> for ColorSpaceUsage
impl From<&str> for ColorSpaceUsage
source§impl FromStr for ColorSpaceUsage
impl FromStr for ColorSpaceUsage
source§impl Hash for ColorSpaceUsage
impl Hash for ColorSpaceUsage
source§impl Ord for ColorSpaceUsage
impl Ord for ColorSpaceUsage
source§fn cmp(&self, other: &ColorSpaceUsage) -> Ordering
fn cmp(&self, other: &ColorSpaceUsage) -> 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 ColorSpaceUsage
impl PartialEq for ColorSpaceUsage
source§fn eq(&self, other: &ColorSpaceUsage) -> bool
fn eq(&self, other: &ColorSpaceUsage) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for ColorSpaceUsage
impl PartialOrd for ColorSpaceUsage
source§fn partial_cmp(&self, other: &ColorSpaceUsage) -> Option<Ordering>
fn partial_cmp(&self, other: &ColorSpaceUsage) -> 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 ColorSpaceUsage
impl StructuralPartialEq for ColorSpaceUsage
Auto Trait Implementations§
impl Freeze for ColorSpaceUsage
impl RefUnwindSafe for ColorSpaceUsage
impl Send for ColorSpaceUsage
impl Sync for ColorSpaceUsage
impl Unpin for ColorSpaceUsage
impl UnwindSafe for ColorSpaceUsage
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