From cfe4034d25d9dc60746d1cb43f456dfe937c68cb Mon Sep 17 00:00:00 2001 From: John Lewis Date: Mon, 22 Jan 2024 09:21:20 -0600 Subject: [PATCH] Add Reflection for Wrapping/Saturating types (#11397) # Objective - Extend reflection to the standard library's `Wrapping` and `Saturating` generic types. This wasn't my use-case but someone in the discord was surprised that this wasn't already done. I decided to make a PR because the other `std::num` items were reflected and if there's a reason to exclude `Wrapping` and `Saturating`, I am unaware of it. ## Solution Trivial fix --- ## Changelog Implemented `Reflect` for `Wrapping` and `Saturating` from `std::num`. --- crates/bevy_reflect/src/impls/std.rs | 2 ++ crates/bevy_reflect/src/type_uuid_impl.rs | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/bevy_reflect/src/impls/std.rs b/crates/bevy_reflect/src/impls/std.rs index 5dcfa9e375..3d522e9462 100644 --- a/crates/bevy_reflect/src/impls/std.rs +++ b/crates/bevy_reflect/src/impls/std.rs @@ -201,6 +201,8 @@ impl_reflect_value!(::core::num::NonZeroI8( Serialize, Deserialize )); +impl_reflect_value!(::core::num::Wrapping()); +impl_reflect_value!(::core::num::Saturating()); impl_reflect_value!(::std::sync::Arc); // `Serialize` and `Deserialize` only for platforms supported by serde: diff --git a/crates/bevy_reflect/src/type_uuid_impl.rs b/crates/bevy_reflect/src/type_uuid_impl.rs index 9e614171ef..d7f7724386 100644 --- a/crates/bevy_reflect/src/type_uuid_impl.rs +++ b/crates/bevy_reflect/src/type_uuid_impl.rs @@ -11,7 +11,7 @@ use std::ffi::OsString; use std::{ num::{ NonZeroI128, NonZeroI16, NonZeroI32, NonZeroI64, NonZeroI8, NonZeroIsize, NonZeroU128, - NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize, + NonZeroU16, NonZeroU32, NonZeroU64, NonZeroU8, NonZeroUsize, Saturating, Wrapping, }, ops::{RangeFrom, RangeFull, RangeInclusive, RangeTo, RangeToInclusive}, path::PathBuf, @@ -69,6 +69,8 @@ impl_type_uuid!(NonZeroI16, "8744c2ec8a10491fae40f8bafa58b30d"); impl_type_uuid!(NonZeroU16, "c7b8b60780a6495bab4fda2bdfedabcc"); impl_type_uuid!(NonZeroU8, "635ee104ef7947fb9d7f79dad47255a3"); impl_type_uuid!(NonZeroI8, "2d3f1570b7f64779826d44da5c7ba069"); +impl_type_uuid!(Saturating, "e9d7c5d5b9e94c9c9c8c8c0f5f3c5c5f"); +impl_type_uuid!(Wrapping, "d5b9e94c9c9c8c8c0f5f3c5c5fe9d7c5"); #[cfg(any(unix, windows))] impl_type_uuid!(OsString, "809e7b3c1ea240979ecd832f91eb842a"); macro_rules! impl_tuple {