Skip to main content

CalcNodeLeaf

Trait CalcNodeLeaf 

Source
pub trait CalcNodeLeaf:
    Clone
    + Sized
    + PartialEq
    + ToCss
    + ToTyped
    + Debug {
Show 27 methods // Required methods fn numeric_type(&self) -> NumericType; fn unitless_value(&self) -> Option<f32>; fn as_percentage(&self) -> Option<(f32, Optional<NumericBaseType>)>; fn canonical_value(&self) -> Option<f32>; fn as_angle_radians(&self) -> Option<f32>; fn new_angle_from_radians(radians: f32) -> Self; fn compare(&self, other: &Self) -> Option<Ordering>; fn new_number(value: f32) -> Self; fn as_number(&self) -> Option<f32>; fn new_from_typed_value( value: f32, numeric_type: NumericType, ) -> Result<Self, ()>; 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) -> SimplificationResult; fn sort_key(&self) -> SortKey; // Provided methods fn is_same_unit_as(&self, other: &Self) -> bool { ... } fn gt(&self, other: &Self) -> bool { ... } fn lt(&self, other: &Self) -> bool { ... } fn lte(&self, other: &Self) -> bool { ... } fn as_number_or_angle_radians(&self) -> Option<f32> { ... } 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, ()> { ... } fn should_serialize_with_root_calc_wrapper(&self) -> bool { ... }
}
Expand description

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

Required Methods§

Source

fn numeric_type(&self) -> NumericType

Returns the type of the leaf.

Source

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

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

Source

fn as_percentage(&self) -> Option<(f32, Optional<NumericBaseType>)>

Returns the value and percent hint if this leaf is a percentage.

Source

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

Returns the canonical value of this leaf in the type’s canonical unit, if there is enough information to determine its numeric value. https://drafts.csswg.org/css-values-4/#simplify-a-calculation-tree

Source

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

Returns the angle value in radians if this leaf is an angle.

Source

fn new_angle_from_radians(radians: f32) -> Self

Creates a new angle leaf from a value in radians.

Source

fn compare(&self, other: &Self) -> 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 new_from_typed_value( value: f32, numeric_type: NumericType, ) -> Result<Self, ()>

Create a new leaf with value in the canonical unit of the given type. Returns Err(()) if the type cannot be constructed as a leaf.

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) -> SimplificationResult

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) -> bool

Return whether a leaf is greater than another.

Source

fn lt(&self, other: &Self) -> bool

Return whether a leaf is less than another.

Source

fn lte(&self, other: &Self) -> bool

Return whether a leaf is smaller or equal than another.

Source

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

Returns a number or angle radians if the leaf is a number or angle.

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.

Source

fn should_serialize_with_root_calc_wrapper(&self) -> bool

Whether this leaf node should serialize with a calc() wrapper if this node is the root of the calculation tree.

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§