Trait core_extensions::integer_extensions::IntegerExt[][src]

pub trait IntegerExt: Add<Self, Output = Self> + Sub<Self, Output = Self> + Div<Self, Output = Self> + Rem<Self, Output = Self> + Mul<Self, Output = Self> + Ord + Eq + Display + Debug + Copy {
    type Unsigned: IntegerExt;
    fn from_u8(n: u8) -> Self;
fn from_i8(n: i8) -> Self;
fn power(self, n: u32) -> Self;
fn abs_unsigned(self) -> Self::Unsigned;
fn number_of_digits(self) -> u32; fn get_sign(self) -> Sign { ... }
fn div_safe(self, other: Self) -> Self { ... } }

Extension trait for integers.

Associated Types

The unsigned version of this integer type.

Required Methods

Converts from a u8.

if Self==i8 it saturates at 0..=127 .

Example

use core_extensions::IntegerExt;

assert_eq!(u8::from_u8(0),0);
assert_eq!(u8::from_u8(255),255);

assert_eq!(i8::from_u8(0),0);
assert_eq!(i8::from_u8(255),127);

assert_eq!(u16::from_u8(0),0);
assert_eq!(u16::from_u8(255),255);

assert_eq!(i16::from_u8(0),0);
assert_eq!(i16::from_u8(255),255);

assert_eq!(u32::from_u8(0),0);
assert_eq!(u32::from_u8(255),255);

assert_eq!(i32::from_u8(0),0);
assert_eq!(i32::from_u8(255),255);

Converts from a i8.

if n < 0 and Self is Unsigned it returns 0.

Example

use core_extensions::IntegerExt;

assert_eq!(u8::from_i8(-128),0);
assert_eq!(u8::from_i8(0   ),0);
assert_eq!(u8::from_i8(1   ),1);
assert_eq!(u8::from_i8(127 ),127);

assert_eq!(i8::from_i8(-128),-128);
assert_eq!(i8::from_i8(0   ),0   );
assert_eq!(i8::from_i8(127 ),127 );

assert_eq!(u16::from_i8(-128),0);
assert_eq!(u16::from_i8(0   ),0);
assert_eq!(u16::from_i8(1   ),1);
assert_eq!(u16::from_i8(127 ),127);

assert_eq!(i16::from_i8(-128),-128);
assert_eq!(i16::from_i8(0   ),0   );
assert_eq!(i16::from_i8(127 ),127 );

assert_eq!(u32::from_i8(-128),0);
assert_eq!(u32::from_i8(0   ),0);
assert_eq!(u32::from_i8(1   ),1);
assert_eq!(u32::from_i8(127 ),127);

assert_eq!(i32::from_i8(-128),-128);
assert_eq!(i32::from_i8(0   ),0   );
assert_eq!(i32::from_i8(127 ),127 );

Raises self to the nth power.

Panic

This has the same panicking behavior as u32::pow().

Like the Self::abs function except that the return type is Self::Unsigned.

Example

use core_extensions::integer_extensions::{IntegerExt,Sign};

assert_eq!(0u8.abs_unsigned(),0);
assert_eq!(0i8.abs_unsigned(),0);
assert_eq!(127i8.abs_unsigned(),127);
assert_eq!((-1i8).abs_unsigned(),1);
assert_eq!((-16i8).abs_unsigned(),16);
assert_eq!((-128i8).abs_unsigned(),128);

Returns the number of decimal digits of self.

Negative numbers add 1 digit because of '-'.

Example

use core_extensions::integer_extensions::{IntegerExt,Sign};

assert_eq!(100.number_of_digits(),3);
assert_eq!(10.number_of_digits(),2);
assert_eq!(1.number_of_digits(),1);
assert_eq!(0.number_of_digits(),1);
assert_eq!((-1).number_of_digits(),2);
assert_eq!((-100).number_of_digits(),4);

Provided Methods

Gets the sign of self which is either Positive or Negative.

Example

use core_extensions::integer_extensions::{IntegerExt,Sign};

assert_eq!(0u8.get_sign(),Sign::Positive);
assert_eq!(0i8.get_sign(),Sign::Positive);
assert_eq!(127i8.get_sign(),Sign::Positive);
assert_eq!((-1i8).get_sign(),Sign::Negative);
assert_eq!((-128i8).get_sign(),Sign::Negative);

Non-panicking division which returns self if other==0.

use core_extensions::integer_extensions::{IntegerExt,Sign};

assert_eq!(60.div_safe(12),5);
assert_eq!(60.div_safe(30),2);
assert_eq!(60.div_safe(31),1);

assert_eq!(60.div_safe(0) ,60);
assert_eq!(13.div_safe(0) ,13);

Implementations on Foreign Types

impl IntegerExt for i8
[src]

impl IntegerExt for u8
[src]

impl IntegerExt for i16
[src]

impl IntegerExt for u16
[src]

impl IntegerExt for i32
[src]

impl IntegerExt for u32
[src]

impl IntegerExt for i64
[src]

impl IntegerExt for u64
[src]

impl IntegerExt for i128
[src]

impl IntegerExt for u128
[src]

impl IntegerExt for isize
[src]

impl IntegerExt for usize
[src]

Implementors