mirror of
https://github.com/bevyengine/bevy
synced 2025-02-16 22:18:33 +00:00
Remove Val
's try_*
arithmetic methods (#9609)
# Objective Remove `Val`'s `try_*` arithmetic methods. fixes #9571 ## Changelog Removed these methods from `bevy_ui::ui_node::Val`: - `try_add` - `try_sub` - `try_add_assign_with_size` - `try_sub_assign_with_size` - `try_add_assign` - `try_sub_assign` - `try_add_assign_with_size` - `try_sub_assign_with_size` ## Migration Guide `Val`'s `try_*` arithmetic methods have been removed. To perform arithmetic on `Val`s deconstruct them using pattern matching.
This commit is contained in:
parent
1839ff7e2a
commit
9f27f011c1
1 changed files with 0 additions and 180 deletions
|
@ -237,42 +237,6 @@ pub enum ValArithmeticError {
|
|||
}
|
||||
|
||||
impl Val {
|
||||
/// Tries to add the values of two [`Val`]s.
|
||||
/// Returns [`ValArithmeticError::NonIdenticalVariants`] if two [`Val`]s are of different variants.
|
||||
/// When adding non-numeric [`Val`]s, it returns the value unchanged.
|
||||
pub fn try_add(&self, rhs: Val) -> Result<Val, ValArithmeticError> {
|
||||
match (self, rhs) {
|
||||
(Val::Auto, Val::Auto) => Ok(*self),
|
||||
(Val::Px(value), Val::Px(rhs_value)) => Ok(Val::Px(value + rhs_value)),
|
||||
(Val::Percent(value), Val::Percent(rhs_value)) => Ok(Val::Percent(value + rhs_value)),
|
||||
_ => Err(ValArithmeticError::NonIdenticalVariants),
|
||||
}
|
||||
}
|
||||
|
||||
/// Adds `rhs` to `self` and assigns the result to `self` (see [`Val::try_add`])
|
||||
pub fn try_add_assign(&mut self, rhs: Val) -> Result<(), ValArithmeticError> {
|
||||
*self = self.try_add(rhs)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Tries to subtract the values of two [`Val`]s.
|
||||
/// Returns [`ValArithmeticError::NonIdenticalVariants`] if two [`Val`]s are of different variants.
|
||||
/// When adding non-numeric [`Val`]s, it returns the value unchanged.
|
||||
pub fn try_sub(&self, rhs: Val) -> Result<Val, ValArithmeticError> {
|
||||
match (self, rhs) {
|
||||
(Val::Auto, Val::Auto) => Ok(*self),
|
||||
(Val::Px(value), Val::Px(rhs_value)) => Ok(Val::Px(value - rhs_value)),
|
||||
(Val::Percent(value), Val::Percent(rhs_value)) => Ok(Val::Percent(value - rhs_value)),
|
||||
_ => Err(ValArithmeticError::NonIdenticalVariants),
|
||||
}
|
||||
}
|
||||
|
||||
/// Subtracts `rhs` from `self` and assigns the result to `self` (see [`Val::try_sub`])
|
||||
pub fn try_sub_assign(&mut self, rhs: Val) -> Result<(), ValArithmeticError> {
|
||||
*self = self.try_sub(rhs)?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// A convenience function for simple evaluation of [`Val::Percent`] variant into a concrete [`Val::Px`] value.
|
||||
/// Returns a [`ValArithmeticError::NonEvaluateable`] if the [`Val`] is impossible to evaluate into [`Val::Px`].
|
||||
/// Otherwise it returns an [`f32`] containing the evaluated value in pixels.
|
||||
|
@ -285,46 +249,6 @@ impl Val {
|
|||
_ => Err(ValArithmeticError::NonEvaluateable),
|
||||
}
|
||||
}
|
||||
|
||||
/// Similar to [`Val::try_add`], but performs [`Val::evaluate`] on both values before adding.
|
||||
/// Returns an [`f32`] value in pixels.
|
||||
pub fn try_add_with_size(&self, rhs: Val, size: f32) -> Result<f32, ValArithmeticError> {
|
||||
let lhs = self.evaluate(size)?;
|
||||
let rhs = rhs.evaluate(size)?;
|
||||
|
||||
Ok(lhs + rhs)
|
||||
}
|
||||
|
||||
/// Similar to [`Val::try_add_assign`], but performs [`Val::evaluate`] on both values before adding.
|
||||
/// The value gets converted to [`Val::Px`].
|
||||
pub fn try_add_assign_with_size(
|
||||
&mut self,
|
||||
rhs: Val,
|
||||
size: f32,
|
||||
) -> Result<(), ValArithmeticError> {
|
||||
*self = Val::Px(self.evaluate(size)? + rhs.evaluate(size)?);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Similar to [`Val::try_sub`], but performs [`Val::evaluate`] on both values before subtracting.
|
||||
/// Returns an [`f32`] value in pixels.
|
||||
pub fn try_sub_with_size(&self, rhs: Val, size: f32) -> Result<f32, ValArithmeticError> {
|
||||
let lhs = self.evaluate(size)?;
|
||||
let rhs = rhs.evaluate(size)?;
|
||||
|
||||
Ok(lhs - rhs)
|
||||
}
|
||||
|
||||
/// Similar to [`Val::try_sub_assign`], but performs [`Val::evaluate`] on both values before adding.
|
||||
/// The value gets converted to [`Val::Px`].
|
||||
pub fn try_sub_assign_with_size(
|
||||
&mut self,
|
||||
rhs: Val,
|
||||
size: f32,
|
||||
) -> Result<(), ValArithmeticError> {
|
||||
*self = Val::Px(self.try_add_with_size(rhs, size)?);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
/// Describes the style of a UI container node
|
||||
|
@ -1795,67 +1719,6 @@ mod tests {
|
|||
|
||||
use super::Val;
|
||||
|
||||
#[test]
|
||||
fn val_try_add() {
|
||||
let auto_sum = Val::Auto.try_add(Val::Auto).unwrap();
|
||||
let px_sum = Val::Px(20.).try_add(Val::Px(22.)).unwrap();
|
||||
let percent_sum = Val::Percent(50.).try_add(Val::Percent(50.)).unwrap();
|
||||
|
||||
assert_eq!(auto_sum, Val::Auto);
|
||||
assert_eq!(px_sum, Val::Px(42.));
|
||||
assert_eq!(percent_sum, Val::Percent(100.));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_try_add_to_self() {
|
||||
let mut val = Val::Px(5.);
|
||||
|
||||
val.try_add_assign(Val::Px(3.)).unwrap();
|
||||
|
||||
assert_eq!(val, Val::Px(8.));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_try_sub() {
|
||||
let auto_sum = Val::Auto.try_sub(Val::Auto).unwrap();
|
||||
let px_sum = Val::Px(72.).try_sub(Val::Px(30.)).unwrap();
|
||||
let percent_sum = Val::Percent(100.).try_sub(Val::Percent(50.)).unwrap();
|
||||
|
||||
assert_eq!(auto_sum, Val::Auto);
|
||||
assert_eq!(px_sum, Val::Px(42.));
|
||||
assert_eq!(percent_sum, Val::Percent(50.));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn different_variant_val_try_add() {
|
||||
let different_variant_sum_1 = Val::Px(50.).try_add(Val::Percent(50.));
|
||||
let different_variant_sum_2 = Val::Percent(50.).try_add(Val::Auto);
|
||||
|
||||
assert_eq!(
|
||||
different_variant_sum_1,
|
||||
Err(ValArithmeticError::NonIdenticalVariants)
|
||||
);
|
||||
assert_eq!(
|
||||
different_variant_sum_2,
|
||||
Err(ValArithmeticError::NonIdenticalVariants)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn different_variant_val_try_sub() {
|
||||
let different_variant_diff_1 = Val::Px(50.).try_sub(Val::Percent(50.));
|
||||
let different_variant_diff_2 = Val::Percent(50.).try_sub(Val::Auto);
|
||||
|
||||
assert_eq!(
|
||||
different_variant_diff_1,
|
||||
Err(ValArithmeticError::NonIdenticalVariants)
|
||||
);
|
||||
assert_eq!(
|
||||
different_variant_diff_2,
|
||||
Err(ValArithmeticError::NonIdenticalVariants)
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_evaluate() {
|
||||
let size = 250.;
|
||||
|
@ -1880,49 +1743,6 @@ mod tests {
|
|||
assert_eq!(evaluate_auto, Err(ValArithmeticError::NonEvaluateable));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_try_add_with_size() {
|
||||
let size = 250.;
|
||||
|
||||
let px_sum = Val::Px(21.).try_add_with_size(Val::Px(21.), size).unwrap();
|
||||
let percent_sum = Val::Percent(20.)
|
||||
.try_add_with_size(Val::Percent(30.), size)
|
||||
.unwrap();
|
||||
let mixed_sum = Val::Px(20.)
|
||||
.try_add_with_size(Val::Percent(30.), size)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(px_sum, 42.);
|
||||
assert_eq!(percent_sum, 0.5 * size);
|
||||
assert_eq!(mixed_sum, 20. + 0.3 * size);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_try_sub_with_size() {
|
||||
let size = 250.;
|
||||
|
||||
let px_sum = Val::Px(60.).try_sub_with_size(Val::Px(18.), size).unwrap();
|
||||
let percent_sum = Val::Percent(80.)
|
||||
.try_sub_with_size(Val::Percent(30.), size)
|
||||
.unwrap();
|
||||
let mixed_sum = Val::Percent(50.)
|
||||
.try_sub_with_size(Val::Px(30.), size)
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(px_sum, 42.);
|
||||
assert_eq!(percent_sum, 0.5 * size);
|
||||
assert_eq!(mixed_sum, 0.5 * size - 30.);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_try_add_non_numeric_with_size() {
|
||||
let size = 250.;
|
||||
|
||||
let percent_sum = Val::Auto.try_add_with_size(Val::Auto, size);
|
||||
|
||||
assert_eq!(percent_sum, Err(ValArithmeticError::NonEvaluateable));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn val_arithmetic_error_messages() {
|
||||
assert_eq!(
|
||||
|
|
Loading…
Add table
Reference in a new issue