pub trait CalcNodeLeaf: Clone + Sized + PartialEq + ToCss {
Show 21 methods // Required methods fn unit(&self) -> CalcUnits; fn unitless_value(&self) -> f32; fn compare( &self, other: &Self, base_is_positive: PositivePercentageBasis ) -> Option<Ordering>; fn new_number(value: f32) -> Self; fn as_number(&self) -> Option<f32>; fn try_sum_in_place(&mut self, other: &Self) -> Result<(), ()>; fn try_product_in_place(&mut self, other: &mut Self) -> bool; fn try_op<O>(&self, other: &Self, op: O) -> Result<Self, ()> where O: Fn(f32, f32) -> f32; fn map(&mut self, op: impl FnMut(f32) -> f32); fn simplify(&mut self); fn sort_key(&self) -> SortKey; // Provided methods fn is_same_unit_as(&self, other: &Self) -> bool { ... } fn gt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool { ... } fn lt(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool { ... } fn lte(&self, other: &Self, basis_positive: PositivePercentageBasis) -> bool { ... } fn is_negative(&self) -> bool { ... } fn is_infinite(&self) -> bool { ... } fn is_zero(&self) -> bool { ... } fn is_nan(&self) -> bool { ... } fn negate(&mut self) { ... } fn sign_from(leaf: &impl CalcNodeLeaf) -> Self { ... }
}
Expand description

A trait that represents all the stuff a valid leaf of a calc expression.

Required Methods§

source

fn unit(&self) -> CalcUnits

Returns the unit of the leaf.

source

fn unitless_value(&self) -> f32

Returns the unitless value of this leaf.

source

fn compare( &self, other: &Self, base_is_positive: PositivePercentageBasis ) -> Option<Ordering>

Do a partial comparison of these values.

source

fn new_number(value: f32) -> Self

Create a new leaf with a number value.

source

fn as_number(&self) -> Option<f32>

Returns a float value if the leaf is a number.

source

fn try_sum_in_place(&mut self, other: &Self) -> Result<(), ()>

Tries to merge one leaf into another using the sum, that is, perform x + y.

source

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, ()>where O: Fn(f32, f32) -> f32,

Tries a generic arithmetic operation.

source

fn map(&mut self, op: impl FnMut(f32) -> f32)

Map the value of this node with the given operation.

source

fn simplify(&mut self)

Canonicalizes the expression if necessary.

source

fn sort_key(&self) -> SortKey

Returns the sort key for simplification.

Provided Methods§

source

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

Return whether a leaf is greater than another.

source

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

Return whether a leaf is smaller or equal than another.

source

fn is_negative(&self) -> bool

Whether this value is known-negative.

source

fn is_infinite(&self) -> bool

Whether this value is infinite.

source

fn is_zero(&self) -> bool

Whether this value is zero.

source

fn is_nan(&self) -> bool

Whether this value is NaN.

source

fn negate(&mut self)

Negates the leaf.

source

fn sign_from(leaf: &impl CalcNodeLeaf) -> Self

Create a new leaf containing the sign() result of the given leaf.

Implementors§