pub trait Truncate: Integer {
// Required methods
fn truncate<T>(self) -> T
where Self: TruncateTarget<T>;
fn saturating_truncate<T>(self) -> T
where Self: TruncateTarget<T>;
fn checked_truncate<T>(self) -> Option<T>
where Self: TruncateTarget<T>;
}Expand description
Truncate to an integer of the same size or smaller.
Preserve the least significant bits with .truncate():
assert_eq!(u16::MAX.truncate::<u8>(), u8::MAX);
assert_eq!(u32::MAX.truncate::<u16>(), u16::MAX);
assert_eq!(u64::MAX.truncate::<u32>(), u32::MAX);
assert_eq!(u128::MAX.truncate::<u64>(), u64::MAX);assert_eq!((-1_i16).truncate::<i8>(), -1_i8);
assert_eq!((-1_i32).truncate::<i16>(), -1_i16);
assert_eq!((-1_i64).truncate::<i32>(), -1_i32);
assert_eq!((-1_i128).truncate::<i64>(), -1_i64);Saturate to the numeric bounds with .saturating_truncate():
assert_eq!(500_u16.saturating_truncate::<u8>(), u8::MAX);
assert_eq!(u32::MAX.saturating_truncate::<u16>(), u16::MAX);
assert_eq!(u64::MAX.saturating_truncate::<u32>(), u32::MAX);
assert_eq!(u128::MAX.saturating_truncate::<u64>(), u64::MAX);assert_eq!((-500_i16).saturating_truncate::<i8>(), i8::MIN);
assert_eq!(i32::MIN.saturating_truncate::<i16>(), i16::MIN);
assert_eq!(i64::MIN.saturating_truncate::<i32>(), i32::MIN);
assert_eq!(i128::MIN.saturating_truncate::<i64>(), i64::MIN);Checked with .checked_truncate(), returning None if the value is out of range:
assert_eq!(u16::MAX.checked_truncate::<u8>(), None);
assert_eq!(u32::MAX.checked_truncate::<u16>(), None);
assert_eq!(u64::MAX.checked_truncate::<u32>(), None);
assert_eq!(u128::MAX.checked_truncate::<u64>(), None);assert_eq!(i16::MIN.checked_truncate::<i8>(), None);
assert_eq!(i32::MIN.checked_truncate::<i16>(), None);
assert_eq!(i64::MIN.checked_truncate::<i32>(), None);
assert_eq!(i128::MIN.checked_truncate::<i64>(), None);Required Methods§
Sourcefn truncate<T>(self) -> Twhere
Self: TruncateTarget<T>,
fn truncate<T>(self) -> Twhere
Self: TruncateTarget<T>,
Truncate an integer to an integer of the same size or smaller, preserving the least significant bits.
Sourcefn saturating_truncate<T>(self) -> Twhere
Self: TruncateTarget<T>,
fn saturating_truncate<T>(self) -> Twhere
Self: TruncateTarget<T>,
Truncate an integer to an integer of the same size or smaller, saturating to the numeric bounds instead of wrapping.
Sourcefn checked_truncate<T>(self) -> Option<T>where
Self: TruncateTarget<T>,
fn checked_truncate<T>(self) -> Option<T>where
Self: TruncateTarget<T>,
Truncate an integer to an integer of the same size or smaller, returning None if the value
is out of range.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.