Expand description

Implementations of traits for converting an Integer to a primitive integer.

The traits are TryFrom, ConvertibleFrom, OverflowingFrom, SaturatingFrom, and WrappingFrom.

§try_from

use malachite_base::num::arithmetic::traits::Pow;
use malachite_nz::integer::conversion::primitive_int_from_integer::{
    SignedFromIntegerError,
    UnsignedFromIntegerError
};
use malachite_nz::integer::Integer;

assert_eq!(u32::try_from(&Integer::from(123)), Ok(123));
assert_eq!(u32::try_from(&Integer::from(-123)), Err(UnsignedFromIntegerError));
assert_eq!(u32::try_from(&Integer::from(10u32).pow(12)), Err(UnsignedFromIntegerError));
assert_eq!(u32::try_from(&-Integer::from(10u32).pow(12)), Err(UnsignedFromIntegerError));

assert_eq!(i32::try_from(&Integer::from(123)), Ok(123));
assert_eq!(i32::try_from(&Integer::from(-123)), Ok(-123));
assert_eq!(i32::try_from(&Integer::from(10u32).pow(12)), Err(SignedFromIntegerError));
assert_eq!(i32::try_from(&-Integer::from(10u32).pow(12)), Err(SignedFromIntegerError));

§wrapping_from

use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::conversion::traits::WrappingFrom;
use malachite_nz::integer::Integer;

assert_eq!(u32::wrapping_from(&Integer::from(123)), 123);
assert_eq!(u32::wrapping_from(&Integer::from(-123)), 4294967173);
assert_eq!(u32::wrapping_from(&Integer::from(10u32).pow(12)), 3567587328);
assert_eq!(u32::wrapping_from(&-Integer::from(10u32).pow(12)), 727379968);

assert_eq!(i32::wrapping_from(&Integer::from(123)), 123);
assert_eq!(i32::wrapping_from(&Integer::from(-123)), -123);
assert_eq!(i32::wrapping_from(&Integer::from(10u32).pow(12)), -727379968);
assert_eq!(i32::wrapping_from(&-Integer::from(10u32).pow(12)), 727379968);

§saturating_from

use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::conversion::traits::SaturatingFrom;
use malachite_nz::integer::Integer;

assert_eq!(u32::saturating_from(&Integer::from(123)), 123);
assert_eq!(u32::saturating_from(&Integer::from(-123)), 0);
assert_eq!(u32::saturating_from(&Integer::from(10u32).pow(12)), u32::MAX);
assert_eq!(u32::saturating_from(&-Integer::from(10u32).pow(12)), 0);

assert_eq!(i32::saturating_from(&Integer::from(123)), 123);
assert_eq!(i32::saturating_from(&Integer::from(-123)), -123);
assert_eq!(i32::saturating_from(&Integer::from(10u32).pow(12)), 2147483647);
assert_eq!(i32::saturating_from(&-Integer::from(10u32).pow(12)), -2147483648);

§overflowing_from

use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::conversion::traits::OverflowingFrom;
use malachite_nz::integer::Integer;

assert_eq!(u32::overflowing_from(&Integer::from(123)), (123, false));
assert_eq!(u32::overflowing_from(&Integer::from(-123)), (4294967173, true));
assert_eq!(u32::overflowing_from(&Integer::from(10u32).pow(12)), (3567587328, true));
assert_eq!(u32::overflowing_from(&-Integer::from(10u32).pow(12)), (727379968, true));

assert_eq!(i32::overflowing_from(&Integer::from(123)), (123, false));
assert_eq!(i32::overflowing_from(&Integer::from(-123)), (-123, false));
assert_eq!(i32::overflowing_from(&Integer::from(10u32).pow(12)), (-727379968, true));
assert_eq!(i32::overflowing_from(&-Integer::from(10u32).pow(12)), (727379968, true));

§convertible_from

use malachite_base::num::arithmetic::traits::Pow;
use malachite_base::num::conversion::traits::ConvertibleFrom;
use malachite_nz::integer::Integer;

assert_eq!(u32::convertible_from(&Integer::from(123)), true);
assert_eq!(u32::convertible_from(&Integer::from(-123)), false);
assert_eq!(u32::convertible_from(&Integer::from(10u32).pow(12)), false);
assert_eq!(u32::convertible_from(&-Integer::from(10u32).pow(12)), false);

assert_eq!(i32::convertible_from(&Integer::from(123)), true);
assert_eq!(i32::convertible_from(&Integer::from(-123)), true);
assert_eq!(i32::convertible_from(&Integer::from(10u32).pow(12)), false);
assert_eq!(i32::convertible_from(&-Integer::from(10u32).pow(12)), false);

Structs§