Implement MutUntyped::from(mut_typed) (#12406)
# Objective Allow to create MutUntyped<'a> instance from Mut<'a, T>. Fixes #12405 ## Solution Added impl<'a, T> From<Mut<'a, T>> for MutUntyped<'>
This commit is contained in:
		
							parent
							
								
									aea9b4a9e4
								
							
						
					
					
						commit
						f0a98645d0
					
				| @ -938,6 +938,15 @@ impl std::fmt::Debug for MutUntyped<'_> { | |||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | impl<'w, T> From<Mut<'w, T>> for MutUntyped<'w> { | ||||||
|  |     fn from(value: Mut<'w, T>) -> Self { | ||||||
|  |         MutUntyped { | ||||||
|  |             value: value.value.into(), | ||||||
|  |             ticks: value.ticks, | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | } | ||||||
|  | 
 | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
| mod tests { | mod tests { | ||||||
|     use bevy_ecs_macros::Resource; |     use bevy_ecs_macros::Resource; | ||||||
| @ -1254,4 +1263,29 @@ mod tests { | |||||||
| 
 | 
 | ||||||
|         assert!(new.is_changed()); |         assert!(new.is_changed()); | ||||||
|     } |     } | ||||||
|  | 
 | ||||||
|  |     #[test] | ||||||
|  |     fn mut_untyped_from_mut() { | ||||||
|  |         let mut component_ticks = ComponentTicks { | ||||||
|  |             added: Tick::new(1), | ||||||
|  |             changed: Tick::new(2), | ||||||
|  |         }; | ||||||
|  |         let ticks = TicksMut { | ||||||
|  |             added: &mut component_ticks.added, | ||||||
|  |             changed: &mut component_ticks.changed, | ||||||
|  |             last_run: Tick::new(3), | ||||||
|  |             this_run: Tick::new(4), | ||||||
|  |         }; | ||||||
|  |         let mut c = C {}; | ||||||
|  |         let mut_typed = Mut { | ||||||
|  |             value: &mut c, | ||||||
|  |             ticks, | ||||||
|  |         }; | ||||||
|  | 
 | ||||||
|  |         let into_mut: MutUntyped = mut_typed.into(); | ||||||
|  |         assert_eq!(1, into_mut.ticks.added.get()); | ||||||
|  |         assert_eq!(2, into_mut.ticks.changed.get()); | ||||||
|  |         assert_eq!(3, into_mut.ticks.last_run.get()); | ||||||
|  |         assert_eq!(4, into_mut.ticks.this_run.get()); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Yasha Borevich
						Yasha Borevich