aboutsummaryrefslogtreecommitdiff
path: root/src/convert.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/convert.rs')
-rw-r--r--src/convert.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/convert.rs b/src/convert.rs
new file mode 100644
index 0000000..afc5faf
--- /dev/null
+++ b/src/convert.rs
@@ -0,0 +1,19 @@
+pub(crate) fn usize_to_u32(u: usize) -> Option<u32> {
+ #[cfg(not(no_try_from))]
+ {
+ use core::convert::TryFrom;
+
+ u32::try_from(u).ok()
+ }
+
+ #[cfg(no_try_from)]
+ {
+ use core::mem;
+
+ if mem::size_of::<usize>() <= mem::size_of::<u32>() || u <= u32::max_value() as usize {
+ Some(u as u32)
+ } else {
+ None
+ }
+ }
+}