devela/num/int/
alias.rs

1// devela::num::int::alias
2
3#![allow(non_camel_case_types)]
4
5use crate::paste;
6
7/// Generates [up|down]casted `[i|u]size` aliases.
8macro_rules! iusize_alias {
9    ($casted:literal, $sign:literal, $ty:ident, $($width:literal : $cast:ty),+) => { paste! {
10        $(
11            #[doc = crate::TAG_PRIMITIVE!()]
12            #[doc = $casted " pointer-sized " $sign " integer primitive."]
13            #[cfg(target_pointer_width = $width)]
14            pub type $ty = $cast;
15        )+
16    }}
17}
18iusize_alias!["A downcasted", "signed", isize_down, "16":i8, "32":i16, "64":i32, "128":i64];
19iusize_alias!["A downcasted", "unsigned", usize_down, "16":u8, "32":u16, "64":u32, "128":u64];
20
21iusize_alias!["An upcasted", "signed", isize_up, "8":i16, "16":i32, "32":i64, "64":i128];
22iusize_alias!["An upcasted", "unsigned", usize_up, "8":u16, "16":u32, "32":u64, "64":u128];