style::values::generics::calc

Trait CalcNodeLeaf

Source
pub trait CalcNodeLeaf:
    Clone
    + Sized
    + PartialEq
    + ToCss {
Show 20 methods // Required methods fn unit(&self) -> CalcUnits; fn unitless_value(&self) -> Option<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) -> Result<(), ()>; 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) -> Result<bool, ()> { ... } fn is_infinite(&self) -> Result<bool, ()> { ... } fn is_zero(&self) -> Result<bool, ()> { ... } fn is_nan(&self) -> Result<bool, ()> { ... } fn sign_from(leaf: &impl CalcNodeLeaf) -> Result<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) -> Option<f32>

Returns the unitless value of this leaf if one is available.

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) -> Result<(), ()>

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) -> Result<bool, ()>

Whether this value is known-negative.

Source

fn is_infinite(&self) -> Result<bool, ()>

Whether this value is infinite.

Source

fn is_zero(&self) -> Result<bool, ()>

Whether this value is zero.

Source

fn is_nan(&self) -> Result<bool, ()>

Whether this value is NaN.

Source

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

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

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§