[][src]Struct xor_distance_exercise::bits::Bits

pub struct Bits { /* fields omitted */ }

Bits representation.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

// Find out bit size of specific integer type.
let size = Bits::bit_size::<i64>();

// Bit representation of `u64` integer.
let mut bit_rep = Bits::new::<u64>();

// Operations on the bit representation.
let bit = bit_rep.get_bit(4);
bit_rep.set_bit(4, true);
bit_rep.set_bit_within_constrains(5, true);
bit_rep.is_bit_decided(4);
let number = bit_rep.form_zero_padded_number::<u64>().unwrap();

Methods

impl Bits[src]

pub fn new<T: PrimInt>() -> Self[src]

Create a new representation of Bits.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let bit_rep = Bits::new::<u64>;

pub fn bit_size<T: PrimInt>() -> usize[src]

Return bit size of the type being represented in bits.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

assert_eq!(8, Bits::bit_size::<u8>());
assert_eq!(32, Bits::bit_size::<u32>());
assert_eq!(64, Bits::bit_size::<u64>());
assert_eq!(64, Bits::bit_size::<i64>());

pub fn get_bit(&self, index: usize) -> Option<bool>[src]

Get bit value for the index.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let bit_rep = Bits::new::<u64>();
let bit = bit_rep.get_bit(4);

Panics

Panics if index is out of range.

pub fn set_bit(&mut self, index: usize, val: bool)[src]

Set new bit value for the index.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let mut bit_rep = Bits::new::<u64>();
bit_rep.set_bit(4, true);
bit_rep.set_bit(5, false);

Panics

Panics if index is out of range.

pub fn set_bit_within_constrains(
    &mut self,
    index: usize,
    val: bool
) -> Result<(), &'static str>
[src]

Set new bit value complying with constrains, already decided bit value can not be changed.

Returns Ok(()) in case constrains were not violated, Err(&str) otherwise.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let mut bit_rep = Bits::new::<u64>();
bit_rep.set_bit_within_constrains(4, true);

Panics

Panics if index is out of range.

pub fn is_bit_decided(&self, index: usize) -> bool[src]

Is bit decided already?

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let bit_rep = Bits::new::<u64>();
bit_rep.is_bit_decided(4);

Panics

Panics if index is out of range.

pub fn form_zero_padded_number<T: PrimInt>(&self) -> Result<T, &str>[src]

Form and return a number based on bits representation, pad/fill undecided bits by zeros.

Examples

extern crate xor_distance_exercise;

use xor_distance_exercise::bits::Bits;

let bit_rep = Bits::new::<u64>();
let number = bit_rep.form_zero_padded_number::<u64>().unwrap();

Auto Trait Implementations

impl Send for Bits

impl Sync for Bits

Blanket Implementations

impl<T, U> Into for T where
    U: From<T>, 
[src]

impl<T> From for T[src]

impl<T, U> TryFrom for T where
    U: Into<T>, 
[src]

type Error = !

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Borrow for T where
    T: ?Sized
[src]

impl<T> BorrowMut for T where
    T: ?Sized
[src]

impl<T, U> TryInto for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

🔬 This is a nightly-only experimental API. (try_from)

The type returned in the event of a conversion error.

impl<T> Any for T where
    T: 'static + ?Sized
[src]