Crate num_convert
source ·Expand description
Generic traits for conversions between integer types.
- The
FromByAddtrait for converting from negative integers to positive or vice versa. - The
IntoByAddtrait for converting into negative integers to positive or vice versa. - The
TryFromByAddtrait for converting from negative integers to positive or vice versa, that can fail. - The
TryIntoByAddtrait for converting into negative integers to positive or vice versa, that can fail. - The
FromAsgeneric trait for conversion from integers with possible overflow. - The
IntoAsgeneric trait for conversion into integers with possible overflow. - The
TryFromDigitstrait for converting from digits as a number, with possible value types.
Other traits for integers.
- A trait
IntegerLento determine the number of digits of integers. - The
Sbitstrait for define the size of integer value in bits. - The
Tbitstrait for define the size of integer type in bits. - The
ToZerotrait for implementing the null value of types. - The
ToMintrait for implement lower bounds on types. - The
ToMaxtrait for implement upper bounds on types.
Examples
Usage:
Convert from negative into positive and positive into negative.
assert_eq!(<u8>::from_by_add(-28i8), 100u8);
assert_eq!(<i8>::from_by_add(10u8), -118i8);Usage:
Convert into between integer types.
fn integer_to_integer<T1: IntoByAdd<U1>, T2: IntoByAdd<U2>, U1, U2>(min: T1, max: T2) -> (U1, U2) {
(min.into_by_add(), max.into_by_add())
}
assert_eq!(integer_to_integer(i16::MIN, u16::MAX), (u16::MIN, i16::MAX));
assert_eq!(integer_to_integer(u16::MIN, u16::MAX), (i16::MIN, i16::MAX));Usage:
Convert from negative into positive without error and with error.
assert_eq!(<u8>::try_from_by_add(-128i16), Some(0u8));
assert_eq!(<u8>::try_from_by_add(-129i16), None);Usage:
Convert between 128 bit types lossless.
assert_eq!(<i128 as TryIntoByAdd<u128>>::try_into_by_add(i128::MIN), Some(u128::MIN));
assert_eq!(<u128 as TryIntoByAdd<i128>>::try_into_by_add(u128::MIN), Some(i128::MIN));Usage:
Conversions type u16 in u8 without overflow and with overflow.
assert_eq!(<u16 as IntoAs<u8>>::into_as(255u16), 255u8);
assert_eq!(<u16 as IntoAs<u8>>::into_as(258u16), 2u8);
assert_eq!(<u8>::from_as(261u16), 5u8);Usage:
Converting from digits as a number.
let arr: [u32; 6] = [25_635_071, 25_634_091, 25_633_334, 25_636_309, 25_637_101, 25_636_243];
let val: Vec<u8> = arr.iter().map(|var| u8::from_digits(*var).unwrap_or(255u8) ).collect::<_>();
assert_eq!(val, [71, 91, 255, 255, 101, 243]);Usage:
The size of integer values in bits.
assert_eq!((-128i8).sbits(), 8u32);
assert_eq!(u64::MAX.sbits(), 64u32);Usage:
The size of integer type in bits.
assert_eq!(i8::tbits(), 8u32);
assert_eq!(u64::tbits(), 64u32);Usage:
Determining the number of digits of integers.
assert_eq!(0i8.len(), 1usize);
assert_eq!(i8::MAX.len(), 3usize);
assert_eq!(i128::MAX.len(), 39usize);
assert_eq!(u128::MAX.len(), 39usize);Traits
- CastFromAs
cast_from_asThe CastFromAs trait for simple convert from value between integer types with possible overflow. - CastIntoAs
cast_into_asThe CastIntoAs trait for simple convert self value between integer types with possible overflow. - The FromAs generic trait for convert from value between integer types with possible overflow.
- A generic trait for converting from possible types.
- A trait IntegerLen to determine the number of digits of integers.
- The IntoAs trait for convert into value between integer types with overflow.
- A generic trait for converting into possible types.
- Sbits
bitsThe Sbit trait for define the size of integer value in bits. - Tbits
bitsGeneric trait for define the size of the integers type in bits. - ToMax
to_maxTrait to implement upper bounds on types. - ToMin
to_minTrait to implement lower bounds on types. - ToZero
to_zeroTrait for implementing the null value of types. - A generic trait for converting from possible types.
- A generic trait for converting from digits into possible types.
- A generic trait for converting into possible types.
- TypeInfo
type_infoTrait for type info. - ValTypeInfo
val_type_infoTrait value type info.