Skip to main content

bevy_reflect/impls/core/
num.rs

1use crate::type_registry::{ReflectDeserialize, ReflectSerialize};
2use bevy_reflect_derive::impl_reflect_opaque;
3
4impl_reflect_opaque!(::core::num::NonZeroI128(
5    Clone,
6    Debug,
7    Hash,
8    PartialEq,
9    PartialOrd,
10    Serialize,
11    Deserialize
12));
13impl_reflect_opaque!(::core::num::NonZeroU128(
14    Clone,
15    Debug,
16    Hash,
17    PartialEq,
18    PartialOrd,
19    Serialize,
20    Deserialize
21));
22impl_reflect_opaque!(::core::num::NonZeroIsize(
23    Clone,
24    Debug,
25    Hash,
26    PartialEq,
27    PartialOrd,
28    Serialize,
29    Deserialize
30));
31impl_reflect_opaque!(::core::num::NonZeroUsize(
32    Clone,
33    Debug,
34    Hash,
35    PartialEq,
36    PartialOrd,
37    Serialize,
38    Deserialize
39));
40impl_reflect_opaque!(::core::num::NonZeroI64(
41    Clone,
42    Debug,
43    Hash,
44    PartialEq,
45    PartialOrd,
46    Serialize,
47    Deserialize
48));
49impl_reflect_opaque!(::core::num::NonZeroU64(
50    Clone,
51    Debug,
52    Hash,
53    PartialEq,
54    PartialOrd,
55    Serialize,
56    Deserialize
57));
58impl_reflect_opaque!(::core::num::NonZeroU32(
59    Clone,
60    Debug,
61    Hash,
62    PartialEq,
63    PartialOrd,
64    Serialize,
65    Deserialize
66));
67impl_reflect_opaque!(::core::num::NonZeroI32(
68    Clone,
69    Debug,
70    Hash,
71    PartialEq,
72    PartialOrd,
73    Serialize,
74    Deserialize
75));
76impl_reflect_opaque!(::core::num::NonZeroI16(
77    Clone,
78    Debug,
79    Hash,
80    PartialEq,
81    PartialOrd,
82    Serialize,
83    Deserialize
84));
85impl_reflect_opaque!(::core::num::NonZeroU16(
86    Clone,
87    Debug,
88    Hash,
89    PartialEq,
90    PartialOrd,
91    Serialize,
92    Deserialize
93));
94impl_reflect_opaque!(::core::num::NonZeroU8(
95    Clone,
96    Debug,
97    Hash,
98    PartialEq,
99    PartialOrd,
100    Serialize,
101    Deserialize
102));
103impl_reflect_opaque!(::core::num::NonZeroI8(
104    Clone,
105    Debug,
106    Hash,
107    PartialEq,
108    PartialOrd,
109    Serialize,
110    Deserialize
111));
112impl_reflect_opaque!(::core::num::Wrapping<T: Clone + Send + Sync>(Clone));
113impl_reflect_opaque!(::core::num::Saturating<T: Clone + Send + Sync>(Clone));
114
115#[cfg(test)]
116mod tests {
117    use bevy_reflect::{FromReflect, PartialReflect};
118
119    #[test]
120    fn nonzero_usize_impl_reflect_from_reflect() {
121        let a: &dyn PartialReflect = &core::num::NonZero::<usize>::new(42).unwrap();
122        let b: &dyn PartialReflect = &core::num::NonZero::<usize>::new(42).unwrap();
123        assert!(a.reflect_partial_eq(b).unwrap_or_default());
124        let forty_two: core::num::NonZero<usize> = FromReflect::from_reflect(a).unwrap();
125        assert_eq!(forty_two, core::num::NonZero::<usize>::new(42).unwrap());
126    }
127}