#[repr(C, u8)]pub enum Optional<T> {
None,
Some(T),
}
Expand description
An optional value, much like Option<T>
, but with a defined struct layout
to be able to use it from C++ as well.
Note that this is relatively inefficient, struct-layout-wise, as you have one byte for the tag, but padding to the alignment of T. If you have multiple optional values and care about struct compactness, you might be better off “coalescing” the combinations into a parent enum. But that shouldn’t matter for most use cases.
Variants§
Implementations§
Trait Implementations§
source§impl<T> ComputeSquaredDistance for Optional<T>where
T: ComputeSquaredDistance,
impl<T> ComputeSquaredDistance for Optional<T>where
T: ComputeSquaredDistance,
source§fn compute_squared_distance(&self, other: &Self) -> Result<SquaredDistance, ()>
fn compute_squared_distance(&self, other: &Self) -> Result<SquaredDistance, ()>
Computes the squared distance between two animatable values.
source§impl<'de, T> Deserialize<'de> for Optional<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Optional<T>where
T: Deserialize<'de>,
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
source§impl<T> MallocSizeOf for Optional<T>where
T: MallocSizeOf,
impl<T> MallocSizeOf for Optional<T>where
T: MallocSizeOf,
source§fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
fn size_of(&self, ops: &mut MallocSizeOfOps) -> usize
Measure the heap usage of all descendant heap-allocated structures, but
not the space taken up by the value itself.
source§impl<T> Parse for Optional<T>where
T: Parse,
impl<T> Parse for Optional<T>where
T: Parse,
source§fn parse<'i, 't>(
context: &ParserContext<'_>,
input: &mut Parser<'i, 't>,
) -> Result<Self, ParseError<'i>>
fn parse<'i, 't>( context: &ParserContext<'_>, input: &mut Parser<'i, 't>, ) -> Result<Self, ParseError<'i>>
Parse a value of this type. Read more
source§impl<T: PartialEq> PartialEq for Optional<T>
impl<T: PartialEq> PartialEq for Optional<T>
source§impl<T> SpecifiedValueInfo for Optional<T>where
T: SpecifiedValueInfo,
impl<T> SpecifiedValueInfo for Optional<T>where
T: SpecifiedValueInfo,
source§const SUPPORTED_TYPES: u8 = _
const SUPPORTED_TYPES: u8 = _
Supported CssTypes by the given value type. Read more
source§impl<T> ToAnimatedValue for Optional<T>where
T: ToAnimatedValue,
impl<T> ToAnimatedValue for Optional<T>where
T: ToAnimatedValue,
§type AnimatedValue = Optional<<T as ToAnimatedValue>::AnimatedValue>
type AnimatedValue = Optional<<T as ToAnimatedValue>::AnimatedValue>
The type of the animated value.
source§fn from_animated_value(from: Self::AnimatedValue) -> Self
fn from_animated_value(from: Self::AnimatedValue) -> Self
Converts back an animated value into a computed value.
source§fn to_animated_value(self, context: &Context<'_>) -> Self::AnimatedValue
fn to_animated_value(self, context: &Context<'_>) -> Self::AnimatedValue
Converts this value to an animated value.
source§impl<T> ToAnimatedZero for Optional<T>where
T: ToAnimatedZero,
impl<T> ToAnimatedZero for Optional<T>where
T: ToAnimatedZero,
source§fn to_animated_zero(&self) -> Result<Self, ()>
fn to_animated_zero(&self) -> Result<Self, ()>
Returns a value that, when added with an underlying value, will produce the underlying
value. This is used for SMIL animation’s “by-animation” where SMIL first interpolates from
the zero value to the ‘by’ value, and then adds the result to the underlying value. Read more
source§impl<T> ToComputedValue for Optional<T>where
T: ToComputedValue,
impl<T> ToComputedValue for Optional<T>where
T: ToComputedValue,
§type ComputedValue = Optional<<T as ToComputedValue>::ComputedValue>
type ComputedValue = Optional<<T as ToComputedValue>::ComputedValue>
The computed value type we’re going to be converted to.
source§fn from_computed_value(from: &Self::ComputedValue) -> Self
fn from_computed_value(from: &Self::ComputedValue) -> Self
Convert a computed value to specified value form. Read more
source§fn to_computed_value(&self, context: &Context<'_>) -> Self::ComputedValue
fn to_computed_value(&self, context: &Context<'_>) -> Self::ComputedValue
Convert a specified value to a computed value, using itself and the data
inside the
Context
.source§impl<T> ToResolvedValue for Optional<T>where
T: ToResolvedValue,
impl<T> ToResolvedValue for Optional<T>where
T: ToResolvedValue,
§type ResolvedValue = Optional<<T as ToResolvedValue>::ResolvedValue>
type ResolvedValue = Optional<<T as ToResolvedValue>::ResolvedValue>
The resolved value type we’re going to be converted to.
source§fn from_resolved_value(from: Self::ResolvedValue) -> Self
fn from_resolved_value(from: Self::ResolvedValue) -> Self
Convert a resolved value to resolved value form.
source§fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
fn to_resolved_value(self, context: &Context<'_>) -> Self::ResolvedValue
Convert a resolved value to a resolved value.
impl<T: Copy> Copy for Optional<T>
impl<T> StructuralPartialEq for Optional<T>
Auto Trait Implementations§
impl<T> Freeze for Optional<T>where
T: Freeze,
impl<T> RefUnwindSafe for Optional<T>where
T: RefUnwindSafe,
impl<T> Send for Optional<T>where
T: Send,
impl<T> Sync for Optional<T>where
T: Sync,
impl<T> Unpin for Optional<T>where
T: Unpin,
impl<T> UnwindSafe for Optional<T>where
T: UnwindSafe,
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
Mutably borrows from an owned value. Read more
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>
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 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>
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 moresource§impl<T> MaybeBoxed<Box<T>> for T
impl<T> MaybeBoxed<Box<T>> for T
source§fn maybe_boxed(self) -> Box<T>
fn maybe_boxed(self) -> Box<T>
Convert
source§impl<T> MaybeBoxed<T> for T
impl<T> MaybeBoxed<T> for T
source§fn maybe_boxed(self) -> T
fn maybe_boxed(self) -> T
Convert