#[repr(u8)]pub enum Leaf {
Length(NoCalcLength),
Angle(Angle),
Time(Time),
Resolution(Resolution),
ColorComponent(ChannelKeyword),
Percentage(CSSFloat),
Number(CSSFloat),
}
Expand description
A leaf node inside a Calc
expression’s AST.
Variants§
Length(NoCalcLength)
<length>
Angle(Angle)
<angle>
Time(Time)
<time>
Resolution(Resolution)
<resolution>
ColorComponent(ChannelKeyword)
A component of a color.
Percentage(CSSFloat)
<percentage>
Number(CSSFloat)
<number>
Implementations§
Trait Implementations§
source§impl CalcNodeLeaf for Leaf
impl CalcNodeLeaf for Leaf
source§fn try_sum_in_place(&mut self, other: &Self) -> Result<(), ()>
fn try_sum_in_place(&mut self, other: &Self) -> Result<(), ()>
Tries to merge one sum to another, that is, perform x
+ y
.
Only handles leaf nodes, it’s the caller’s responsibility to simplify them before calling this if needed.
source§fn unitless_value(&self) -> Option<f32>
fn unitless_value(&self) -> Option<f32>
Returns the unitless value of this leaf if one is available.
source§fn new_number(value: f32) -> Self
fn new_number(value: f32) -> Self
Create a new leaf with a number value.
source§fn compare(
&self,
other: &Self,
basis: PositivePercentageBasis,
) -> Option<Ordering>
fn compare( &self, other: &Self, basis: PositivePercentageBasis, ) -> Option<Ordering>
Do a partial comparison of these values.
source§fn try_product_in_place(&mut self, other: &mut Self) -> bool
fn try_product_in_place(&mut self, other: &mut Self) -> bool
Try to merge the right leaf into the left by using a multiplication. Return true if the
merge was successful, otherwise false.
source§fn try_op<O>(&self, other: &Self, op: O) -> Result<Self, ()>
fn try_op<O>(&self, other: &Self, op: O) -> Result<Self, ()>
Tries a generic arithmetic operation.
source§fn map(&mut self, op: impl FnMut(f32) -> f32) -> Result<(), ()>
fn map(&mut self, op: impl FnMut(f32) -> f32) -> Result<(), ()>
Map the value of this node with the given operation.
source§fn is_same_unit_as(&self, other: &Self) -> bool
fn is_same_unit_as(&self, other: &Self) -> bool
Return true if the units of both leaves are equal. (NOTE: Does not take
the values into account)
source§fn gt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
fn gt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
Return whether a leaf is greater than another.
source§fn lt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
fn lt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
Return whether a leaf is less than another.
source§fn lte(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
fn lte(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool
Return whether a leaf is smaller or equal than another.
source§impl MallocSizeOf for Leaf
impl MallocSizeOf for Leaf
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.
impl StructuralPartialEq for Leaf
Auto Trait Implementations§
impl Freeze for Leaf
impl RefUnwindSafe for Leaf
impl Send for Leaf
impl Sync for Leaf
impl Unpin for Leaf
impl UnwindSafe for Leaf
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)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