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
					
				| @ -237,42 +237,6 @@ pub enum ValArithmeticError { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| impl Val { | 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.
 |     /// 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`].
 |     /// 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.
 |     /// Otherwise it returns an [`f32`] containing the evaluated value in pixels.
 | ||||||
| @ -285,46 +249,6 @@ impl Val { | |||||||
|             _ => Err(ValArithmeticError::NonEvaluateable), |             _ => 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
 | /// Describes the style of a UI container node
 | ||||||
| @ -1795,67 +1719,6 @@ mod tests { | |||||||
| 
 | 
 | ||||||
|     use super::Val; |     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] |     #[test] | ||||||
|     fn val_evaluate() { |     fn val_evaluate() { | ||||||
|         let size = 250.; |         let size = 250.; | ||||||
| @ -1880,49 +1743,6 @@ mod tests { | |||||||
|         assert_eq!(evaluate_auto, Err(ValArithmeticError::NonEvaluateable)); |         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] |     #[test] | ||||||
|     fn val_arithmetic_error_messages() { |     fn val_arithmetic_error_messages() { | ||||||
|         assert_eq!( |         assert_eq!( | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 ickshonpe
						ickshonpe