use crate::{Cast, Overflow, isize_down, isize_up, usize_down, usize_up};
type Result<T> = crate::Result<T, Overflow>;
#[doc = crate::_tags!(num)]
#[doc = crate::_doc_location!("num/grain")]
pub trait PrimitiveCast {
fn checked_cast_to_u8(self) -> Result<u8>;
fn checked_cast_to_u16(self) -> Result<u16>;
fn checked_cast_to_u32(self) -> Result<u32>;
fn checked_cast_to_u64(self) -> Result<u64>;
fn checked_cast_to_u128(self) -> Result<u128>;
fn checked_cast_to_usize(self) -> Result<usize>;
fn checked_cast_to_usize_up(self) -> Result<usize_up>;
fn checked_cast_to_usize_down(self) -> Result<usize_down>;
fn checked_cast_to_i8(self) -> Result<i8>;
fn checked_cast_to_i16(self) -> Result<i16>;
fn checked_cast_to_i32(self) -> Result<i32>;
fn checked_cast_to_i64(self) -> Result<i64>;
fn checked_cast_to_i128(self) -> Result<i128>;
fn checked_cast_to_isize(self) -> Result<isize>;
fn checked_cast_to_isize_up(self) -> Result<isize_up>;
fn checked_cast_to_isize_down(self) -> Result<isize_down>;
#[must_use]
fn saturating_cast_to_u8(self) -> u8;
#[must_use]
fn saturating_cast_to_u16(self) -> u16;
#[must_use]
fn saturating_cast_to_u32(self) -> u32;
#[must_use]
fn saturating_cast_to_u64(self) -> u64;
#[must_use]
fn saturating_cast_to_u128(self) -> u128;
#[must_use]
fn saturating_cast_to_usize(self) -> usize;
#[must_use]
fn saturating_cast_to_usize_up(self) -> usize_up;
#[must_use]
fn saturating_cast_to_usize_down(self) -> usize_down;
#[must_use]
fn saturating_cast_to_i8(self) -> i8;
#[must_use]
fn saturating_cast_to_i16(self) -> i16;
#[must_use]
fn saturating_cast_to_i32(self) -> i32;
#[must_use]
fn saturating_cast_to_i64(self) -> i64;
#[must_use]
fn saturating_cast_to_i128(self) -> i128;
#[must_use]
fn saturating_cast_to_isize(self) -> isize;
#[must_use]
fn saturating_cast_to_isize_up(self) -> isize_up;
#[must_use]
fn saturating_cast_to_isize_down(self) -> isize_down;
#[must_use]
fn wrapping_cast_to_u8(self) -> u8;
#[must_use]
fn wrapping_cast_to_u16(self) -> u16;
#[must_use]
fn wrapping_cast_to_u32(self) -> u32;
#[must_use]
fn wrapping_cast_to_u64(self) -> u64;
#[must_use]
fn wrapping_cast_to_u128(self) -> u128;
#[must_use]
fn wrapping_cast_to_usize(self) -> usize;
#[must_use]
fn wrapping_cast_to_usize_up(self) -> usize_up;
#[must_use]
fn wrapping_cast_to_usize_down(self) -> usize_down;
#[must_use]
fn wrapping_cast_to_i8(self) -> i8;
#[must_use]
fn wrapping_cast_to_i16(self) -> i16;
#[must_use]
fn wrapping_cast_to_i32(self) -> i32;
#[must_use]
fn wrapping_cast_to_i64(self) -> i64;
#[must_use]
fn wrapping_cast_to_i128(self) -> i128;
#[must_use]
fn wrapping_cast_to_isize(self) -> isize;
#[must_use]
fn wrapping_cast_to_isize_up(self) -> isize_up;
#[must_use]
fn wrapping_cast_to_isize_down(self) -> isize_down;
}
macro_rules! impl_cast_methods {
() => {
impl_cast_methods![u8, u16, u32, u64, u128, usize, i8, i16, i32, i64, i128, isize];
};
($($t:ty),+) => { $( impl_cast_methods![@$t]; )+ };
(@$t:ty) => { crate::paste! {
impl PrimitiveCast for $t {
#[inline(always)]
fn checked_cast_to_u8(self) -> Result<u8> { Cast(self).checked_cast_to_u8() }
#[inline(always)]
fn checked_cast_to_u16(self) -> Result<u16> { Cast(self).checked_cast_to_u16() }
#[inline(always)]
fn checked_cast_to_u32(self) -> Result<u32> { Cast(self).checked_cast_to_u32() }
#[inline(always)]
fn checked_cast_to_u64(self) -> Result<u64> { Cast(self).checked_cast_to_u64() }
#[inline(always)]
fn checked_cast_to_u128(self) -> Result<u128> { Cast(self).checked_cast_to_u128() }
#[inline(always)]
fn checked_cast_to_usize(self) -> Result<usize> { Cast(self).checked_cast_to_usize() }
#[inline(always)]
fn checked_cast_to_usize_up(self) -> Result<usize_up> {
Cast(self).checked_cast_to_usize_up() }
#[inline(always)]
fn checked_cast_to_usize_down(self) -> Result<usize_down> {
Cast(self).checked_cast_to_usize_down() }
#[inline(always)]
fn checked_cast_to_i8(self) -> Result<i8> { Cast(self).checked_cast_to_i8() }
#[inline(always)]
fn checked_cast_to_i16(self) -> Result<i16> { Cast(self).checked_cast_to_i16() }
#[inline(always)]
fn checked_cast_to_i32(self) -> Result<i32> { Cast(self).checked_cast_to_i32() }
#[inline(always)]
fn checked_cast_to_i64(self) -> Result<i64> { Cast(self).checked_cast_to_i64() }
#[inline(always)]
fn checked_cast_to_i128(self) -> Result<i128> { Cast(self).checked_cast_to_i128() }
#[inline(always)]
fn checked_cast_to_isize(self) -> Result<isize> { Cast(self).checked_cast_to_isize() }
#[inline(always)]
fn checked_cast_to_isize_up(self) -> Result<isize_up> {
Cast(self).checked_cast_to_isize_up() }
#[inline(always)]
fn checked_cast_to_isize_down(self) -> Result<isize_down> {
Cast(self).checked_cast_to_isize_down() }
#[inline(always)]
fn saturating_cast_to_u8(self) -> u8 { Cast(self).saturating_cast_to_u8() }
#[inline(always)]
fn saturating_cast_to_u16(self) -> u16 { Cast(self).saturating_cast_to_u16() }
#[inline(always)]
fn saturating_cast_to_u32(self) -> u32 { Cast(self).saturating_cast_to_u32() }
#[inline(always)]
fn saturating_cast_to_u64(self) -> u64 { Cast(self).saturating_cast_to_u64() }
#[inline(always)]
fn saturating_cast_to_u128(self) -> u128 { Cast(self).saturating_cast_to_u128() }
#[inline(always)]
fn saturating_cast_to_usize(self) -> usize { Cast(self).saturating_cast_to_usize() }
#[inline(always)]
fn saturating_cast_to_usize_up(self) -> usize_up {
Cast(self).saturating_cast_to_usize_up() }
#[inline(always)]
fn saturating_cast_to_usize_down(self) -> usize_down {
Cast(self).saturating_cast_to_usize_down() }
#[inline(always)]
fn saturating_cast_to_i8(self) -> i8 { Cast(self).saturating_cast_to_i8() }
#[inline(always)]
fn saturating_cast_to_i16(self) -> i16 { Cast(self).saturating_cast_to_i16() }
#[inline(always)]
fn saturating_cast_to_i32(self) -> i32 { Cast(self).saturating_cast_to_i32() }
#[inline(always)]
fn saturating_cast_to_i64(self) -> i64 { Cast(self).saturating_cast_to_i64() }
#[inline(always)]
fn saturating_cast_to_i128(self) -> i128 { Cast(self).saturating_cast_to_i128() }
#[inline(always)]
fn saturating_cast_to_isize(self) -> isize { Cast(self).saturating_cast_to_isize() }
#[inline(always)]
fn saturating_cast_to_isize_up(self) -> isize_up {
Cast(self).saturating_cast_to_isize_up() }
#[inline(always)]
fn saturating_cast_to_isize_down(self) -> isize_down {
Cast(self).saturating_cast_to_isize_down() }
#[inline(always)]
fn wrapping_cast_to_u8(self) -> u8 { Cast(self).wrapping_cast_to_u8() }
#[inline(always)]
fn wrapping_cast_to_u16(self) -> u16 { Cast(self).wrapping_cast_to_u16() }
#[inline(always)]
fn wrapping_cast_to_u32(self) -> u32 { Cast(self).wrapping_cast_to_u32() }
#[inline(always)]
fn wrapping_cast_to_u64(self) -> u64 { Cast(self).wrapping_cast_to_u64() }
#[inline(always)]
fn wrapping_cast_to_u128(self) -> u128 { Cast(self).wrapping_cast_to_u128() }
#[inline(always)]
fn wrapping_cast_to_usize(self) -> usize { Cast(self).wrapping_cast_to_usize() }
#[inline(always)]
fn wrapping_cast_to_usize_up(self) -> usize_up {
Cast(self).wrapping_cast_to_usize_up() }
#[inline(always)]
fn wrapping_cast_to_usize_down(self) -> usize_down {
Cast(self).wrapping_cast_to_usize_down() }
#[inline(always)]
fn wrapping_cast_to_i8(self) -> i8 { Cast(self).wrapping_cast_to_i8() }
#[inline(always)]
fn wrapping_cast_to_i16(self) -> i16 { Cast(self).wrapping_cast_to_i16() }
#[inline(always)]
fn wrapping_cast_to_i32(self) -> i32 { Cast(self).wrapping_cast_to_i32() }
#[inline(always)]
fn wrapping_cast_to_i64(self) -> i64 { Cast(self).wrapping_cast_to_i64() }
#[inline(always)]
fn wrapping_cast_to_i128(self) -> i128 { Cast(self).wrapping_cast_to_i128() }
#[inline(always)]
fn wrapping_cast_to_isize(self) -> isize { Cast(self).wrapping_cast_to_isize() }
#[inline(always)]
fn wrapping_cast_to_isize_up(self) -> isize_up {
Cast(self).wrapping_cast_to_isize_up() }
#[inline(always)]
fn wrapping_cast_to_isize_down(self) -> isize_down {
Cast(self).wrapping_cast_to_isize_down() }
}
}};
}
impl_cast_methods![];