devela 0.28.0

A development substrate of coherence.
Documentation
// devela::num::dom::int::alias

#![allow(non_camel_case_types)]

use crate::paste;

/// Generates [up|down]casted `[i|u]size` aliases.
macro_rules! _iusize_alias {
    ($casted:literal, $sign:literal, $ty:ident, $($width:literal : $cast:ty),+) => { paste! {
        $(
            #[doc = crate::_tags!(primitive num)]
            #[doc = $casted " pointer-sized " $sign " integer primitive."]
            #[doc = crate::_doc_meta!{location("num/dom/int")}]
            #[cfg(target_pointer_width = $width)]
            #[cfg_attr(nightly_doc, doc(cfg(any(
                target_pointer_width = "16",
                target_pointer_width = "32",
                target_pointer_width = "64"
            ))))]
            pub type $ty = $cast;
        )+
    }}
}
_iusize_alias!["A downcasted", "signed", isize_down, "16":i8, "32":i16, "64":i32, "128":i64];
_iusize_alias!["A downcasted", "unsigned", usize_down, "16":u8, "32":u16, "64":u32, "128":u64];

_iusize_alias!["An upcasted", "signed", isize_up, "8":i16, "16":i32, "32":i64, "64":i128];
_iusize_alias!["An upcasted", "unsigned", usize_up, "8":u16, "16":u32, "32":u64, "64":u128];