[][src]Trait az::StaticCast

pub trait StaticCast<Dst> {
    fn static_cast(self) -> Option<Dst>;
}

Used to cast values if all possible source type values fit in the destination type.

This trait is different from CheckedCast because with function inlining, the compiler should be able to determine at compile time whether this trait’s method returns Some or None. That is, a particular implementation of this trait should either always return Some or always return None.

It is normally easier to use the StaticAs trait instead of this trait.

Examples

use az::StaticCast;

let a: Option<i64> = 15u32.static_cast();
assert_eq!(a, Some(15));
assert_eq!(StaticCast::<f32>::static_cast(-12i32), Some(-12.0));
// 20_000_003 in f32 is rounded to 20_000_004 (24 bits of precision)
assert_eq!(StaticCast::<f32>::static_cast(20_000_003_u32), Some(20_000_004.0));

The following examples return None even though the value 0 fits in the target type, because in each case there are some possible values of the source type which cannot be converted to the target type.

use az::StaticCast;

// i32 cannot be converted to u64 because of negative numbers
assert!(StaticCast::<u64>::static_cast(0i32).is_none());
// f32 cannot be converted to i32 because of NaN, inifinite, and large values
assert!(StaticCast::<i32>::static_cast(0f32).is_none());

Required methods

fn static_cast(self) -> Option<Dst>

Casts if the conversion works for all source type values, otherwise returns None.

Loading content...

Implementors

impl StaticCast<Wrapping<i8>> for bool[src]

impl StaticCast<Wrapping<i8>> for isize[src]

impl StaticCast<Wrapping<i8>> for usize[src]

impl StaticCast<Wrapping<i16>> for bool[src]

impl StaticCast<Wrapping<i16>> for isize[src]

impl StaticCast<Wrapping<i16>> for usize[src]

impl StaticCast<Wrapping<i32>> for bool[src]

impl StaticCast<Wrapping<i32>> for isize[src]

impl StaticCast<Wrapping<i32>> for usize[src]

impl StaticCast<Wrapping<i64>> for bool[src]

impl StaticCast<Wrapping<i64>> for isize[src]

impl StaticCast<Wrapping<i64>> for usize[src]

impl StaticCast<Wrapping<i128>> for bool[src]

impl StaticCast<Wrapping<i128>> for isize[src]

impl StaticCast<Wrapping<i128>> for usize[src]

impl StaticCast<Wrapping<i128>> for Round<f32>[src]

impl StaticCast<Wrapping<i128>> for Round<f64>[src]

impl StaticCast<Wrapping<i128>> for f32[src]

impl StaticCast<Wrapping<i128>> for f64[src]

impl StaticCast<Wrapping<i128>> for i8[src]

impl StaticCast<Wrapping<i128>> for i16[src]

impl StaticCast<Wrapping<i128>> for i32[src]

impl StaticCast<Wrapping<i128>> for i64[src]

impl StaticCast<Wrapping<i128>> for i128[src]

impl StaticCast<Wrapping<i128>> for u8[src]

impl StaticCast<Wrapping<i128>> for u16[src]

impl StaticCast<Wrapping<i128>> for u32[src]

impl StaticCast<Wrapping<i128>> for u64[src]

impl StaticCast<Wrapping<i128>> for u128[src]

impl StaticCast<Wrapping<i16>> for Round<f32>[src]

impl StaticCast<Wrapping<i16>> for Round<f64>[src]

impl StaticCast<Wrapping<i16>> for f32[src]

impl StaticCast<Wrapping<i16>> for f64[src]

impl StaticCast<Wrapping<i16>> for i8[src]

impl StaticCast<Wrapping<i16>> for i16[src]

impl StaticCast<Wrapping<i16>> for i32[src]

impl StaticCast<Wrapping<i16>> for i64[src]

impl StaticCast<Wrapping<i16>> for i128[src]

impl StaticCast<Wrapping<i16>> for u8[src]

impl StaticCast<Wrapping<i16>> for u16[src]

impl StaticCast<Wrapping<i16>> for u32[src]

impl StaticCast<Wrapping<i16>> for u64[src]

impl StaticCast<Wrapping<i16>> for u128[src]

impl StaticCast<Wrapping<i32>> for Round<f32>[src]

impl StaticCast<Wrapping<i32>> for Round<f64>[src]

impl StaticCast<Wrapping<i32>> for f32[src]

impl StaticCast<Wrapping<i32>> for f64[src]

impl StaticCast<Wrapping<i32>> for i8[src]

impl StaticCast<Wrapping<i32>> for i16[src]

impl StaticCast<Wrapping<i32>> for i32[src]

impl StaticCast<Wrapping<i32>> for i64[src]

impl StaticCast<Wrapping<i32>> for i128[src]

impl StaticCast<Wrapping<i32>> for u8[src]

impl StaticCast<Wrapping<i32>> for u16[src]

impl StaticCast<Wrapping<i32>> for u32[src]

impl StaticCast<Wrapping<i32>> for u64[src]

impl StaticCast<Wrapping<i32>> for u128[src]

impl StaticCast<Wrapping<i64>> for Round<f32>[src]

impl StaticCast<Wrapping<i64>> for Round<f64>[src]

impl StaticCast<Wrapping<i64>> for f32[src]

impl StaticCast<Wrapping<i64>> for f64[src]

impl StaticCast<Wrapping<i64>> for i8[src]

impl StaticCast<Wrapping<i64>> for i16[src]

impl StaticCast<Wrapping<i64>> for i32[src]

impl StaticCast<Wrapping<i64>> for i64[src]

impl StaticCast<Wrapping<i64>> for i128[src]

impl StaticCast<Wrapping<i64>> for u8[src]

impl StaticCast<Wrapping<i64>> for u16[src]

impl StaticCast<Wrapping<i64>> for u32[src]

impl StaticCast<Wrapping<i64>> for u64[src]

impl StaticCast<Wrapping<i64>> for u128[src]

impl StaticCast<Wrapping<i8>> for Round<f32>[src]

impl StaticCast<Wrapping<i8>> for Round<f64>[src]

impl StaticCast<Wrapping<i8>> for f32[src]

impl StaticCast<Wrapping<i8>> for f64[src]

impl StaticCast<Wrapping<i8>> for i8[src]

impl StaticCast<Wrapping<i8>> for i16[src]

impl StaticCast<Wrapping<i8>> for i32[src]

impl StaticCast<Wrapping<i8>> for i64[src]

impl StaticCast<Wrapping<i8>> for i128[src]

impl StaticCast<Wrapping<i8>> for u8[src]

impl StaticCast<Wrapping<i8>> for u16[src]

impl StaticCast<Wrapping<i8>> for u32[src]

impl StaticCast<Wrapping<i8>> for u64[src]

impl StaticCast<Wrapping<i8>> for u128[src]

impl StaticCast<Wrapping<isize>> for Round<f32>[src]

impl StaticCast<Wrapping<isize>> for Round<f64>[src]

impl StaticCast<Wrapping<isize>> for bool[src]

impl StaticCast<Wrapping<isize>> for f32[src]

impl StaticCast<Wrapping<isize>> for f64[src]

impl StaticCast<Wrapping<isize>> for i8[src]

impl StaticCast<Wrapping<isize>> for i16[src]

impl StaticCast<Wrapping<isize>> for i32[src]

impl StaticCast<Wrapping<isize>> for i64[src]

impl StaticCast<Wrapping<isize>> for i128[src]

impl StaticCast<Wrapping<isize>> for isize[src]

impl StaticCast<Wrapping<isize>> for u8[src]

impl StaticCast<Wrapping<isize>> for u16[src]

impl StaticCast<Wrapping<isize>> for u32[src]

impl StaticCast<Wrapping<isize>> for u64[src]

impl StaticCast<Wrapping<isize>> for u128[src]

impl StaticCast<Wrapping<isize>> for usize[src]

impl StaticCast<Wrapping<u8>> for bool[src]

impl StaticCast<Wrapping<u8>> for isize[src]

impl StaticCast<Wrapping<u8>> for usize[src]

impl StaticCast<Wrapping<u16>> for bool[src]

impl StaticCast<Wrapping<u16>> for isize[src]

impl StaticCast<Wrapping<u16>> for usize[src]

impl StaticCast<Wrapping<u32>> for bool[src]

impl StaticCast<Wrapping<u32>> for isize[src]

impl StaticCast<Wrapping<u32>> for usize[src]

impl StaticCast<Wrapping<u64>> for bool[src]

impl StaticCast<Wrapping<u64>> for isize[src]

impl StaticCast<Wrapping<u64>> for usize[src]

impl StaticCast<Wrapping<u128>> for bool[src]

impl StaticCast<Wrapping<u128>> for isize[src]

impl StaticCast<Wrapping<u128>> for usize[src]

impl StaticCast<Wrapping<u128>> for Round<f32>[src]

impl StaticCast<Wrapping<u128>> for Round<f64>[src]

impl StaticCast<Wrapping<u128>> for f32[src]

impl StaticCast<Wrapping<u128>> for f64[src]

impl StaticCast<Wrapping<u128>> for i8[src]

impl StaticCast<Wrapping<u128>> for i16[src]

impl StaticCast<Wrapping<u128>> for i32[src]

impl StaticCast<Wrapping<u128>> for i64[src]

impl StaticCast<Wrapping<u128>> for i128[src]

impl StaticCast<Wrapping<u128>> for u8[src]

impl StaticCast<Wrapping<u128>> for u16[src]

impl StaticCast<Wrapping<u128>> for u32[src]

impl StaticCast<Wrapping<u128>> for u64[src]

impl StaticCast<Wrapping<u128>> for u128[src]

impl StaticCast<Wrapping<u16>> for Round<f32>[src]

impl StaticCast<Wrapping<u16>> for Round<f64>[src]

impl StaticCast<Wrapping<u16>> for f32[src]

impl StaticCast<Wrapping<u16>> for f64[src]

impl StaticCast<Wrapping<u16>> for i8[src]

impl StaticCast<Wrapping<u16>> for i16[src]

impl StaticCast<Wrapping<u16>> for i32[src]

impl StaticCast<Wrapping<u16>> for i64[src]

impl StaticCast<Wrapping<u16>> for i128[src]

impl StaticCast<Wrapping<u16>> for u8[src]

impl StaticCast<Wrapping<u16>> for u16[src]

impl StaticCast<Wrapping<u16>> for u32[src]

impl StaticCast<Wrapping<u16>> for u64[src]

impl StaticCast<Wrapping<u16>> for u128[src]

impl StaticCast<Wrapping<u32>> for Round<f32>[src]

impl StaticCast<Wrapping<u32>> for Round<f64>[src]

impl StaticCast<Wrapping<u32>> for f32[src]

impl StaticCast<Wrapping<u32>> for f64[src]

impl StaticCast<Wrapping<u32>> for i8[src]

impl StaticCast<Wrapping<u32>> for i16[src]

impl StaticCast<Wrapping<u32>> for i32[src]

impl StaticCast<Wrapping<u32>> for i64[src]

impl StaticCast<Wrapping<u32>> for i128[src]

impl StaticCast<Wrapping<u32>> for u8[src]

impl StaticCast<Wrapping<u32>> for u16[src]

impl StaticCast<Wrapping<u32>> for u32[src]

impl StaticCast<Wrapping<u32>> for u64[src]

impl StaticCast<Wrapping<u32>> for u128[src]

impl StaticCast<Wrapping<u64>> for Round<f32>[src]

impl StaticCast<Wrapping<u64>> for Round<f64>[src]

impl StaticCast<Wrapping<u64>> for f32[src]

impl StaticCast<Wrapping<u64>> for f64[src]

impl StaticCast<Wrapping<u64>> for i8[src]

impl StaticCast<Wrapping<u64>> for i16[src]

impl StaticCast<Wrapping<u64>> for i32[src]

impl StaticCast<Wrapping<u64>> for i64[src]

impl StaticCast<Wrapping<u64>> for i128[src]

impl StaticCast<Wrapping<u64>> for u8[src]

impl StaticCast<Wrapping<u64>> for u16[src]

impl StaticCast<Wrapping<u64>> for u32[src]

impl StaticCast<Wrapping<u64>> for u64[src]

impl StaticCast<Wrapping<u64>> for u128[src]

impl StaticCast<Wrapping<u8>> for Round<f32>[src]

impl StaticCast<Wrapping<u8>> for Round<f64>[src]

impl StaticCast<Wrapping<u8>> for f32[src]

impl StaticCast<Wrapping<u8>> for f64[src]

impl StaticCast<Wrapping<u8>> for i8[src]

impl StaticCast<Wrapping<u8>> for i16[src]

impl StaticCast<Wrapping<u8>> for i32[src]

impl StaticCast<Wrapping<u8>> for i64[src]

impl StaticCast<Wrapping<u8>> for i128[src]

impl StaticCast<Wrapping<u8>> for u8[src]

impl StaticCast<Wrapping<u8>> for u16[src]

impl StaticCast<Wrapping<u8>> for u32[src]

impl StaticCast<Wrapping<u8>> for u64[src]

impl StaticCast<Wrapping<u8>> for u128[src]

impl StaticCast<Wrapping<usize>> for Round<f32>[src]

impl StaticCast<Wrapping<usize>> for Round<f64>[src]

impl StaticCast<Wrapping<usize>> for bool[src]

impl StaticCast<Wrapping<usize>> for f32[src]

impl StaticCast<Wrapping<usize>> for f64[src]

impl StaticCast<Wrapping<usize>> for i8[src]

impl StaticCast<Wrapping<usize>> for i16[src]

impl StaticCast<Wrapping<usize>> for i32[src]

impl StaticCast<Wrapping<usize>> for i64[src]

impl StaticCast<Wrapping<usize>> for i128[src]

impl StaticCast<Wrapping<usize>> for isize[src]

impl StaticCast<Wrapping<usize>> for u8[src]

impl StaticCast<Wrapping<usize>> for u16[src]

impl StaticCast<Wrapping<usize>> for u32[src]

impl StaticCast<Wrapping<usize>> for u64[src]

impl StaticCast<Wrapping<usize>> for u128[src]

impl StaticCast<Wrapping<usize>> for usize[src]

impl StaticCast<f32> for isize[src]

impl StaticCast<f32> for usize[src]

impl StaticCast<f64> for isize[src]

impl StaticCast<f64> for usize[src]

impl StaticCast<f32> for f32[src]

impl StaticCast<f32> for f64[src]

impl StaticCast<f32> for i8[src]

impl StaticCast<f32> for i16[src]

impl StaticCast<f32> for i32[src]

impl StaticCast<f32> for i64[src]

impl StaticCast<f32> for i128[src]

impl StaticCast<f32> for u8[src]

impl StaticCast<f32> for u16[src]

impl StaticCast<f32> for u32[src]

impl StaticCast<f32> for u64[src]

impl StaticCast<f32> for u128[src]

impl StaticCast<f64> for f32[src]

impl StaticCast<f64> for f64[src]

impl StaticCast<f64> for i8[src]

impl StaticCast<f64> for i16[src]

impl StaticCast<f64> for i32[src]

impl StaticCast<f64> for i64[src]

impl StaticCast<f64> for i128[src]

impl StaticCast<f64> for u8[src]

impl StaticCast<f64> for u16[src]

impl StaticCast<f64> for u32[src]

impl StaticCast<f64> for u64[src]

impl StaticCast<f64> for u128[src]

impl StaticCast<i8> for bool[src]

impl StaticCast<i8> for isize[src]

impl StaticCast<i8> for usize[src]

impl StaticCast<i16> for bool[src]

impl StaticCast<i16> for usize[src]

impl StaticCast<i16> for isize[src]

impl StaticCast<i32> for bool[src]

impl StaticCast<i32> for isize[src]

impl StaticCast<i32> for usize[src]

impl StaticCast<i64> for bool[src]

impl StaticCast<i64> for isize[src]

impl StaticCast<i64> for usize[src]

impl StaticCast<i128> for bool[src]

impl StaticCast<i128> for isize[src]

impl StaticCast<i128> for usize[src]

impl StaticCast<i128> for Round<f32>[src]

impl StaticCast<i128> for Round<f64>[src]

impl StaticCast<i128> for f32[src]

impl StaticCast<i128> for f64[src]

impl StaticCast<i128> for i8[src]

impl StaticCast<i128> for i16[src]

impl StaticCast<i128> for i32[src]

impl StaticCast<i128> for i64[src]

impl StaticCast<i128> for i128[src]

impl StaticCast<i128> for u8[src]

impl StaticCast<i128> for u16[src]

impl StaticCast<i128> for u32[src]

impl StaticCast<i128> for u64[src]

impl StaticCast<i128> for u128[src]

impl StaticCast<i16> for Round<f32>[src]

impl StaticCast<i16> for Round<f64>[src]

impl StaticCast<i16> for f32[src]

impl StaticCast<i16> for f64[src]

impl StaticCast<i16> for i8[src]

impl StaticCast<i16> for i16[src]

impl StaticCast<i16> for i32[src]

impl StaticCast<i16> for i64[src]

impl StaticCast<i16> for i128[src]

impl StaticCast<i16> for u8[src]

impl StaticCast<i16> for u16[src]

impl StaticCast<i16> for u32[src]

impl StaticCast<i16> for u64[src]

impl StaticCast<i16> for u128[src]

impl StaticCast<i32> for Round<f32>[src]

impl StaticCast<i32> for Round<f64>[src]

impl StaticCast<i32> for f32[src]

impl StaticCast<i32> for f64[src]

impl StaticCast<i32> for i8[src]

impl StaticCast<i32> for i16[src]

impl StaticCast<i32> for i32[src]

impl StaticCast<i32> for i64[src]

impl StaticCast<i32> for i128[src]

impl StaticCast<i32> for u8[src]

impl StaticCast<i32> for u16[src]

impl StaticCast<i32> for u32[src]

impl StaticCast<i32> for u64[src]

impl StaticCast<i32> for u128[src]

impl StaticCast<i64> for Round<f32>[src]

impl StaticCast<i64> for Round<f64>[src]

impl StaticCast<i64> for f32[src]

impl StaticCast<i64> for f64[src]

impl StaticCast<i64> for i8[src]

impl StaticCast<i64> for i16[src]

impl StaticCast<i64> for i32[src]

impl StaticCast<i64> for i64[src]

impl StaticCast<i64> for i128[src]

impl StaticCast<i64> for u8[src]

impl StaticCast<i64> for u16[src]

impl StaticCast<i64> for u32[src]

impl StaticCast<i64> for u64[src]

impl StaticCast<i64> for u128[src]

impl StaticCast<i8> for Round<f32>[src]

impl StaticCast<i8> for Round<f64>[src]

impl StaticCast<i8> for f32[src]

impl StaticCast<i8> for f64[src]

impl StaticCast<i8> for i8[src]

impl StaticCast<i8> for i16[src]

impl StaticCast<i8> for i32[src]

impl StaticCast<i8> for i64[src]

impl StaticCast<i8> for i128[src]

impl StaticCast<i8> for u8[src]

impl StaticCast<i8> for u16[src]

impl StaticCast<i8> for u32[src]

impl StaticCast<i8> for u64[src]

impl StaticCast<i8> for u128[src]

impl StaticCast<isize> for Round<f32>[src]

impl StaticCast<isize> for Round<f64>[src]

impl StaticCast<isize> for bool[src]

impl StaticCast<isize> for f32[src]

impl StaticCast<isize> for f64[src]

impl StaticCast<isize> for i8[src]

impl StaticCast<isize> for i16[src]

impl StaticCast<isize> for i32[src]

impl StaticCast<isize> for i64[src]

impl StaticCast<isize> for i128[src]

impl StaticCast<isize> for isize[src]

impl StaticCast<isize> for u8[src]

impl StaticCast<isize> for u16[src]

impl StaticCast<isize> for u32[src]

impl StaticCast<isize> for u64[src]

impl StaticCast<isize> for u128[src]

impl StaticCast<isize> for usize[src]

impl StaticCast<u8> for bool[src]

impl StaticCast<u8> for isize[src]

impl StaticCast<u8> for usize[src]

impl StaticCast<u16> for bool[src]

impl StaticCast<u16> for isize[src]

impl StaticCast<u16> for usize[src]

impl StaticCast<u32> for bool[src]

impl StaticCast<u32> for isize[src]

impl StaticCast<u32> for usize[src]

impl StaticCast<u64> for bool[src]

impl StaticCast<u64> for isize[src]

impl StaticCast<u64> for usize[src]

impl StaticCast<u128> for bool[src]

impl StaticCast<u128> for usize[src]

impl StaticCast<u128> for isize[src]

impl StaticCast<u128> for Round<f32>[src]

impl StaticCast<u128> for Round<f64>[src]

impl StaticCast<u128> for f32[src]

impl StaticCast<u128> for f64[src]

impl StaticCast<u128> for i8[src]

impl StaticCast<u128> for i16[src]

impl StaticCast<u128> for i32[src]

impl StaticCast<u128> for i64[src]

impl StaticCast<u128> for i128[src]

impl StaticCast<u128> for u8[src]

impl StaticCast<u128> for u16[src]

impl StaticCast<u128> for u32[src]

impl StaticCast<u128> for u64[src]

impl StaticCast<u128> for u128[src]

impl StaticCast<u16> for Round<f32>[src]

impl StaticCast<u16> for Round<f64>[src]

impl StaticCast<u16> for f32[src]

impl StaticCast<u16> for f64[src]

impl StaticCast<u16> for i8[src]

impl StaticCast<u16> for i16[src]

impl StaticCast<u16> for i32[src]

impl StaticCast<u16> for i64[src]

impl StaticCast<u16> for i128[src]

impl StaticCast<u16> for u8[src]

impl StaticCast<u16> for u16[src]

impl StaticCast<u16> for u32[src]

impl StaticCast<u16> for u64[src]

impl StaticCast<u16> for u128[src]

impl StaticCast<u32> for Round<f32>[src]

impl StaticCast<u32> for Round<f64>[src]

impl StaticCast<u32> for f32[src]

impl StaticCast<u32> for f64[src]

impl StaticCast<u32> for i8[src]

impl StaticCast<u32> for i16[src]

impl StaticCast<u32> for i32[src]

impl StaticCast<u32> for i64[src]

impl StaticCast<u32> for i128[src]

impl StaticCast<u32> for u8[src]

impl StaticCast<u32> for u16[src]

impl StaticCast<u32> for u32[src]

impl StaticCast<u32> for u64[src]

impl StaticCast<u32> for u128[src]

impl StaticCast<u64> for Round<f32>[src]

impl StaticCast<u64> for Round<f64>[src]

impl StaticCast<u64> for f32[src]

impl StaticCast<u64> for f64[src]

impl StaticCast<u64> for i8[src]

impl StaticCast<u64> for i16[src]

impl StaticCast<u64> for i32[src]

impl StaticCast<u64> for i64[src]

impl StaticCast<u64> for i128[src]

impl StaticCast<u64> for u8[src]

impl StaticCast<u64> for u16[src]

impl StaticCast<u64> for u32[src]

impl StaticCast<u64> for u64[src]

impl StaticCast<u64> for u128[src]

impl StaticCast<u8> for Round<f32>[src]

impl StaticCast<u8> for Round<f64>[src]

impl StaticCast<u8> for f32[src]

impl StaticCast<u8> for f64[src]

impl StaticCast<u8> for i8[src]

impl StaticCast<u8> for i16[src]

impl StaticCast<u8> for i32[src]

impl StaticCast<u8> for i64[src]

impl StaticCast<u8> for i128[src]

impl StaticCast<u8> for u8[src]

impl StaticCast<u8> for u16[src]

impl StaticCast<u8> for u32[src]

impl StaticCast<u8> for u64[src]

impl StaticCast<u8> for u128[src]

impl StaticCast<usize> for Round<f32>[src]

impl StaticCast<usize> for Round<f64>[src]

impl StaticCast<usize> for bool[src]

impl StaticCast<usize> for f32[src]

impl StaticCast<usize> for f64[src]

impl StaticCast<usize> for i8[src]

impl StaticCast<usize> for i16[src]

impl StaticCast<usize> for i32[src]

impl StaticCast<usize> for i64[src]

impl StaticCast<usize> for i128[src]

impl StaticCast<usize> for isize[src]

impl StaticCast<usize> for u8[src]

impl StaticCast<usize> for u16[src]

impl StaticCast<usize> for u32[src]

impl StaticCast<usize> for u64[src]

impl StaticCast<usize> for u128[src]

impl StaticCast<usize> for usize[src]

Loading content...