Struct num::bigint::BigInt
[-] [+]
[src]
pub struct BigInt { // some fields omitted }
A big signed integer type.
Methods
impl BigInt
fn new(sign: Sign, digits: Vec<BigDigit>) -> BigInt
Creates and initializes a BigInt.
The digits are in little-endian base 232.
fn from_biguint(sign: Sign, data: BigUint) -> BigInt
Creates and initializes a BigInt
.
The digits are in little-endian base 232.
fn from_slice(sign: Sign, slice: &[BigDigit]) -> BigInt
Creates and initializes a BigInt
.
fn from_bytes_be(sign: Sign, bytes: &[u8]) -> BigInt
Creates and initializes a BigInt
.
The bytes are in big-endian byte order.
Examples
extern crate num; fn main() { use num::bigint::{BigInt, Sign}; assert_eq!(BigInt::from_bytes_be(Sign::Plus, "A".as_bytes()), BigInt::parse_bytes("65".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "AA".as_bytes()), BigInt::parse_bytes("16705".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "AB".as_bytes()), BigInt::parse_bytes("16706".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "Hello world!".as_bytes()), BigInt::parse_bytes("22405534230753963835153736737".as_bytes(), 10).unwrap()); }use num::bigint::{BigInt, Sign}; assert_eq!(BigInt::from_bytes_be(Sign::Plus, "A".as_bytes()), BigInt::parse_bytes("65".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "AA".as_bytes()), BigInt::parse_bytes("16705".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "AB".as_bytes()), BigInt::parse_bytes("16706".as_bytes(), 10).unwrap()); assert_eq!(BigInt::from_bytes_be(Sign::Plus, "Hello world!".as_bytes()), BigInt::parse_bytes("22405534230753963835153736737".as_bytes(), 10).unwrap());
fn from_bytes_le(sign: Sign, bytes: &[u8]) -> BigInt
Creates and initializes a BigInt
.
The bytes are in little-endian byte order.
fn to_bytes_le(&self) -> (Sign, Vec<u8>)
Returns the sign and the byte representation of the BigInt
in little-endian byte order.
fn to_bytes_be(&self) -> (Sign, Vec<u8>)
Returns the sign and the byte representation of the BigInt
in big-endian byte order.
fn parse_bytes(buf: &[u8], radix: u32) -> Option<BigInt>
Creates and initializes a BigInt
.
Examples
extern crate num; fn main() { use num::bigint::{BigInt, ToBigInt}; assert_eq!(BigInt::parse_bytes("1234".as_bytes(), 10), ToBigInt::to_bigint(&1234)); assert_eq!(BigInt::parse_bytes("ABCD".as_bytes(), 16), ToBigInt::to_bigint(&0xABCD)); assert_eq!(BigInt::parse_bytes("G".as_bytes(), 16), None); }use num::bigint::{BigInt, ToBigInt}; assert_eq!(BigInt::parse_bytes("1234".as_bytes(), 10), ToBigInt::to_bigint(&1234)); assert_eq!(BigInt::parse_bytes("ABCD".as_bytes(), 16), ToBigInt::to_bigint(&0xABCD)); assert_eq!(BigInt::parse_bytes("G".as_bytes(), 16), None);
fn to_biguint(&self) -> Option<BigUint>
Converts this BigInt
into a BigUint
, if it's not negative.
fn checked_add(&self, v: &BigInt) -> Option<BigInt>
fn checked_sub(&self, v: &BigInt) -> Option<BigInt>
fn checked_mul(&self, v: &BigInt) -> Option<BigInt>
fn checked_div(&self, v: &BigInt) -> Option<BigInt>
Trait Implementations
impl ToBigUint for BigInt
fn to_biguint(&self) -> Option<BigUint>
impl PartialEq for BigInt
impl Eq for BigInt
fn assert_receiver_is_total_eq(&self)
impl PartialOrd for BigInt
fn partial_cmp(&self, other: &BigInt) -> Option<Ordering>
fn lt(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
fn gt(&self, other: &Rhs) -> bool
fn ge(&self, other: &Rhs) -> bool
impl Ord for BigInt
impl Default for BigInt
impl Display for BigInt
impl Hash for BigInt
fn hash<H>(&self, state: &mut H) where H: Hasher
fn hash_slice<H>(data: &[Self], state: &mut H) where H: Hasher
impl FromStr for BigInt
type Err = ParseBigIntError
fn from_str(s: &str) -> Result<BigInt, ParseBigIntError>
impl Num for BigInt
type FromStrRadixErr = ParseBigIntError
fn from_str_radix(s: &str, radix: u32) -> Result<BigInt, ParseBigIntError>
Creates and initializes a BigInt.
impl Shl<usize> for BigInt
impl Shr<usize> for BigInt
impl Zero for BigInt
impl One for BigInt
impl Signed for BigInt
fn abs(&self) -> BigInt
fn abs_sub(&self, other: &BigInt) -> BigInt
fn signum(&self) -> BigInt
fn is_positive(&self) -> bool
fn is_negative(&self) -> bool
impl Add<BigInt> for BigInt
impl<'a> Add<&'a BigInt> for BigInt
impl Sub<BigInt> for BigInt
impl<'a> Sub<&'a BigInt> for BigInt
impl Mul<BigInt> for BigInt
impl<'a> Mul<&'a BigInt> for BigInt
impl Div<BigInt> for BigInt
impl<'a> Div<&'a BigInt> for BigInt
impl Rem<BigInt> for BigInt
impl<'a> Rem<&'a BigInt> for BigInt
impl Neg for BigInt
impl CheckedAdd for BigInt
fn checked_add(&self, v: &BigInt) -> Option<BigInt>
impl CheckedSub for BigInt
fn checked_sub(&self, v: &BigInt) -> Option<BigInt>
impl CheckedMul for BigInt
fn checked_mul(&self, v: &BigInt) -> Option<BigInt>
impl CheckedDiv for BigInt
fn checked_div(&self, v: &BigInt) -> Option<BigInt>
impl Integer for BigInt
fn div_rem(&self, other: &BigInt) -> (BigInt, BigInt)
fn div_floor(&self, other: &BigInt) -> BigInt
fn mod_floor(&self, other: &BigInt) -> BigInt
fn div_mod_floor(&self, other: &BigInt) -> (BigInt, BigInt)
fn gcd(&self, other: &BigInt) -> BigInt
Calculates the Greatest Common Divisor (GCD) of the number and other
.
The result is always positive.
fn lcm(&self, other: &BigInt) -> BigInt
Calculates the Lowest Common Multiple (LCM) of the number and other
.
fn divides(&self, other: &BigInt) -> bool
Deprecated, use is_multiple_of
instead.
fn is_multiple_of(&self, other: &BigInt) -> bool
Returns true
if the number is a multiple of other
.
fn is_even(&self) -> bool
Returns true
if the number is divisible by 2
.
fn is_odd(&self) -> bool
Returns true
if the number is not divisible by 2
.