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