Trait AsPrimitive
pub trait AsPrimitive<T>: 'static + Copy
where
T: 'static + Copy,
A generic interface for casting between machine scalars with the
as operator, which admits narrowing and precision loss.
Implementers of this trait AsPrimitive should behave like a primitive
numeric type (e.g. a newtype around another primitive), and the
intended conversion must never fail.
Examples
# use AsPrimitive;
let three: i32 = .as_;
assert_eq!;
Safety
In Rust versions before 1.45.0, some uses of the as operator were not entirely safe.
In particular, it was undefined behavior if
a truncated floating point value could not fit in the target integer
type (#10184).
# use num_traits::AsPrimitive;
let x: u8 = (1.04E+17).as_(); // UB
Required Methods
fn as_(self) -> TConvert a value to another, using the
asoperator.
Implementors
impl AsPrimitive<char> for charimpl AsPrimitive<char> for u8impl AsPrimitive<f32> for f32impl AsPrimitive<f32> for f64impl AsPrimitive<f32> for i128impl AsPrimitive<f32> for i16impl AsPrimitive<f32> for i32impl AsPrimitive<f32> for i64impl AsPrimitive<f32> for i8impl AsPrimitive<f32> for isizeimpl AsPrimitive<f32> for u128impl AsPrimitive<f32> for u16impl AsPrimitive<f32> for u32impl AsPrimitive<f32> for u64impl AsPrimitive<f32> for u8impl AsPrimitive<f32> for usizeimpl AsPrimitive<f64> for f32impl AsPrimitive<f64> for f64impl AsPrimitive<f64> for i128impl AsPrimitive<f64> for i16impl AsPrimitive<f64> for i32impl AsPrimitive<f64> for i64impl AsPrimitive<f64> for i8impl AsPrimitive<f64> for isizeimpl AsPrimitive<f64> for u128impl AsPrimitive<f64> for u16impl AsPrimitive<f64> for u32impl AsPrimitive<f64> for u64impl AsPrimitive<f64> for u8impl AsPrimitive<f64> for usizeimpl AsPrimitive<i128> for boolimpl AsPrimitive<i128> for charimpl AsPrimitive<i128> for f32impl AsPrimitive<i128> for f64impl AsPrimitive<i128> for i128impl AsPrimitive<i128> for i16impl AsPrimitive<i128> for i32impl AsPrimitive<i128> for i64impl AsPrimitive<i128> for i8impl AsPrimitive<i128> for isizeimpl AsPrimitive<i128> for u128impl AsPrimitive<i128> for u16impl AsPrimitive<i128> for u32impl AsPrimitive<i128> for u64impl AsPrimitive<i128> for u8impl AsPrimitive<i128> for usizeimpl AsPrimitive<i16> for boolimpl AsPrimitive<i16> for charimpl AsPrimitive<i16> for f32impl AsPrimitive<i16> for f64impl AsPrimitive<i16> for i128impl AsPrimitive<i16> for i16impl AsPrimitive<i16> for i32impl AsPrimitive<i16> for i64impl AsPrimitive<i16> for i8impl AsPrimitive<i16> for isizeimpl AsPrimitive<i16> for u128impl AsPrimitive<i16> for u16impl AsPrimitive<i16> for u32impl AsPrimitive<i16> for u64impl AsPrimitive<i16> for u8impl AsPrimitive<i16> for usizeimpl AsPrimitive<i32> for boolimpl AsPrimitive<i32> for charimpl AsPrimitive<i32> for f32impl AsPrimitive<i32> for f64impl AsPrimitive<i32> for i128impl AsPrimitive<i32> for i16impl AsPrimitive<i32> for i32impl AsPrimitive<i32> for i64impl AsPrimitive<i32> for i8impl AsPrimitive<i32> for isizeimpl AsPrimitive<i32> for u128impl AsPrimitive<i32> for u16impl AsPrimitive<i32> for u32impl AsPrimitive<i32> for u64impl AsPrimitive<i32> for u8impl AsPrimitive<i32> for usizeimpl AsPrimitive<i64> for boolimpl AsPrimitive<i64> for charimpl AsPrimitive<i64> for f32impl AsPrimitive<i64> for f64impl AsPrimitive<i64> for i128impl AsPrimitive<i64> for i16impl AsPrimitive<i64> for i32impl AsPrimitive<i64> for i64impl AsPrimitive<i64> for i8impl AsPrimitive<i64> for isizeimpl AsPrimitive<i64> for u128impl AsPrimitive<i64> for u16impl AsPrimitive<i64> for u32impl AsPrimitive<i64> for u64impl AsPrimitive<i64> for u8impl AsPrimitive<i64> for usizeimpl AsPrimitive<i8> for boolimpl AsPrimitive<i8> for charimpl AsPrimitive<i8> for f32impl AsPrimitive<i8> for f64impl AsPrimitive<i8> for i128impl AsPrimitive<i8> for i16impl AsPrimitive<i8> for i32impl AsPrimitive<i8> for i64impl AsPrimitive<i8> for i8impl AsPrimitive<i8> for isizeimpl AsPrimitive<i8> for u128impl AsPrimitive<i8> for u16impl AsPrimitive<i8> for u32impl AsPrimitive<i8> for u64impl AsPrimitive<i8> for u8impl AsPrimitive<i8> for usizeimpl AsPrimitive<isize> for boolimpl AsPrimitive<isize> for charimpl AsPrimitive<isize> for f32impl AsPrimitive<isize> for f64impl AsPrimitive<isize> for i128impl AsPrimitive<isize> for i16impl AsPrimitive<isize> for i32impl AsPrimitive<isize> for i64impl AsPrimitive<isize> for i8impl AsPrimitive<isize> for isizeimpl AsPrimitive<isize> for u128impl AsPrimitive<isize> for u16impl AsPrimitive<isize> for u32impl AsPrimitive<isize> for u64impl AsPrimitive<isize> for u8impl AsPrimitive<isize> for usizeimpl AsPrimitive<u128> for boolimpl AsPrimitive<u128> for charimpl AsPrimitive<u128> for f32impl AsPrimitive<u128> for f64impl AsPrimitive<u128> for i128impl AsPrimitive<u128> for i16impl AsPrimitive<u128> for i32impl AsPrimitive<u128> for i64impl AsPrimitive<u128> for i8impl AsPrimitive<u128> for isizeimpl AsPrimitive<u128> for u128impl AsPrimitive<u128> for u16impl AsPrimitive<u128> for u32impl AsPrimitive<u128> for u64impl AsPrimitive<u128> for u8impl AsPrimitive<u128> for usizeimpl AsPrimitive<u16> for boolimpl AsPrimitive<u16> for charimpl AsPrimitive<u16> for f32impl AsPrimitive<u16> for f64impl AsPrimitive<u16> for i128impl AsPrimitive<u16> for i16impl AsPrimitive<u16> for i32impl AsPrimitive<u16> for i64impl AsPrimitive<u16> for i8impl AsPrimitive<u16> for isizeimpl AsPrimitive<u16> for u128impl AsPrimitive<u16> for u16impl AsPrimitive<u16> for u32impl AsPrimitive<u16> for u64impl AsPrimitive<u16> for u8impl AsPrimitive<u16> for usizeimpl AsPrimitive<u32> for boolimpl AsPrimitive<u32> for charimpl AsPrimitive<u32> for f32impl AsPrimitive<u32> for f64impl AsPrimitive<u32> for i128impl AsPrimitive<u32> for i16impl AsPrimitive<u32> for i32impl AsPrimitive<u32> for i64impl AsPrimitive<u32> for i8impl AsPrimitive<u32> for isizeimpl AsPrimitive<u32> for u128impl AsPrimitive<u32> for u16impl AsPrimitive<u32> for u32impl AsPrimitive<u32> for u64impl AsPrimitive<u32> for u8impl AsPrimitive<u32> for usizeimpl AsPrimitive<u64> for boolimpl AsPrimitive<u64> for charimpl AsPrimitive<u64> for f32impl AsPrimitive<u64> for f64impl AsPrimitive<u64> for i128impl AsPrimitive<u64> for i16impl AsPrimitive<u64> for i32impl AsPrimitive<u64> for i64impl AsPrimitive<u64> for i8impl AsPrimitive<u64> for isizeimpl AsPrimitive<u64> for u128impl AsPrimitive<u64> for u16impl AsPrimitive<u64> for u32impl AsPrimitive<u64> for u64impl AsPrimitive<u64> for u8impl AsPrimitive<u64> for usizeimpl AsPrimitive<u8> for boolimpl AsPrimitive<u8> for charimpl AsPrimitive<u8> for f32impl AsPrimitive<u8> for f64impl AsPrimitive<u8> for i128impl AsPrimitive<u8> for i16impl AsPrimitive<u8> for i32impl AsPrimitive<u8> for i64impl AsPrimitive<u8> for i8impl AsPrimitive<u8> for isizeimpl AsPrimitive<u8> for u128impl AsPrimitive<u8> for u16impl AsPrimitive<u8> for u32impl AsPrimitive<u8> for u64impl AsPrimitive<u8> for u8impl AsPrimitive<u8> for usizeimpl AsPrimitive<usize> for boolimpl AsPrimitive<usize> for charimpl AsPrimitive<usize> for f32impl AsPrimitive<usize> for f64impl AsPrimitive<usize> for i128impl AsPrimitive<usize> for i16impl AsPrimitive<usize> for i32impl AsPrimitive<usize> for i64impl AsPrimitive<usize> for i8impl AsPrimitive<usize> for isizeimpl AsPrimitive<usize> for u128impl AsPrimitive<usize> for u16impl AsPrimitive<usize> for u32impl AsPrimitive<usize> for u64impl AsPrimitive<usize> for u8impl AsPrimitive<usize> for usize