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

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

type Unsigned: IntegerExt

The unsigned version of this integer type.

Loading content...

Required methods

fn from_u8(n: u8) -> Self

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);

fn from_i8(n: i8) -> Self

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 );

fn power(self, n: u32) -> Self

Raises self to the nth power.

Panic

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

fn abs_unsigned(self) -> Self::Unsigned

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);

fn number_of_digits(self) -> u32

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);
Loading content...

Provided methods

fn get_sign(self) -> Sign

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);

fn div_safe(self, other: Self) -> Self

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);
Loading content...

Implementations on Foreign Types

impl IntegerExt for i8[src]

type Unsigned = u8

impl IntegerExt for u8[src]

type Unsigned = u8

impl IntegerExt for i16[src]

type Unsigned = u16

impl IntegerExt for u16[src]

type Unsigned = u16

impl IntegerExt for i32[src]

type Unsigned = u32

impl IntegerExt for u32[src]

type Unsigned = u32

impl IntegerExt for i64[src]

type Unsigned = u64

impl IntegerExt for u64[src]

type Unsigned = u64

impl IntegerExt for i128[src]

type Unsigned = u128

impl IntegerExt for u128[src]

type Unsigned = u128

impl IntegerExt for isize[src]

type Unsigned = usize

impl IntegerExt for usize[src]

type Unsigned = usize

Loading content...

Implementors

Loading content...