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.