[][src]Struct bitvec::slice::RChunksExact

pub struct RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
{ /* fields omitted */ }

State keeper for reverse exact iteration over a BitSlice.

Type Parameters

  • C: Cursor: The bit-order type of the underlying BitSlice.
  • T: 'a + BitStore: The storage type of the underlying BitSlice.

Lifetimes

  • 'a: The lifetime of the underlying BitSlice.

Methods

impl<'a, C, T> RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

pub fn remainder(&self) -> &'a BitSlice<C, T>[src]

Produces the remainder of the original slice, which will not be included in the iteration.

Parameters

  • &self

Returns

The remaining slice that the iteration will not include.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
let rchunks_exact = bits.rchunks_exact(3);
assert_eq!(rchunks_exact.remainder(), &bits[.. 2]);

Trait Implementations

impl<'a, C, T> Iterator for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

type Item = &'a BitSlice<C, T>

The type of the elements being iterated over.

fn next(&mut self) -> Option<Self::Item>[src]

Advances the iterator by one, returning the first chunk in it (if any).

Parameters

  • &mut self

Returns

The leading chunk in the iterator, if any.

Examples

use bitvec::prelude::*;

let bits = 1u8.as_bitslice::<LittleEndian>();
let mut rchunks_exact = bits.rchunks_exact(3);
assert_eq!(rchunks_exact.next(), Some(&bits[5 .. 8]));
assert_eq!(rchunks_exact.next(), Some(&bits[2 .. 5]));
assert!(rchunks_exact.next().is_none());

fn size_hint(&self) -> (usize, Option<usize>)[src]

Hints at the number of chunks remaining in the iterator.

Because the exact size is always known, this always produces (len, Some(len)).

Parameters

  • &self

Returns

  • usize: The minimum chunks remaining.
  • Option<usize>: The maximum chunks remaining.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
let mut rchunks_exact = bits.rchunks_exact(3);
assert_eq!(rchunks_exact.size_hint(), (2, Some(2)));
rchunks_exact.next();
assert_eq!(rchunks_exact.size_hint(), (1, Some(1)));
rchunks_exact.next();
assert_eq!(rchunks_exact.size_hint(), (0, Some(0)));

fn count(self) -> usize[src]

Counts how many chunks are live in the iterator, consuming it.

Parameters

  • self

Returns

The number of chunks remaining in the iterator.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
assert_eq!(bits.rchunks_exact(3).count(), 2);

fn nth(&mut self, n: usize) -> Option<Self::Item>[src]

Advances the iterator by n chunks, starting from zero.

Parameters

  • &mut self
  • n: The number of chunks to skip, before producing the next bit after skips. If this overshoots the iterator’s remaining length, then the iterator is marked empty before returning None.

Returns

If n does not overshoot the iterator’s bounds, this produces the nth bit after advancing the iterator to it, discarding the intermediate chunks.

If n does overshoot the iterator’s bounds, this empties the iterator and returns None.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
let mut rchunks_exact = bits.rchunks_exact(3);
assert_eq!(rchunks_exact.nth(1), Some(&bits[2 .. 5]));
assert!(rchunks_exact.nth(0).is_none());

fn last(self) -> Option<Self::Item>[src]

Consumes the iterator, returning only the final bit.

Parameters

  • self

Returns

The last bit in the iterator slice, if any.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
assert!(bits.iter().last().unwrap());

impl<'a, C, T> DoubleEndedIterator for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

fn next_back(&mut self) -> Option<Self::Item>[src]

Produces the next chunk from the front of the slice.

Parameters

  • &mut self

Returns

The last chunk in the slice, if any.

Examples

use bitvec::prelude::*;

let bits = 1u8.as_bitslice::<BigEndian>();
let mut rchunks_exact = bits.rchunks_exact(3);
assert_eq!(rchunks_exact.next_back(), Some(&bits[2 .. 5]));
assert_eq!(rchunks_exact.next_back(), Some(&bits[5 .. 8]));
assert!(rchunks_exact.next_back().is_none());

impl<'a, C, T> ExactSizeIterator for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

Mark that the iterator has an exact size.

impl<'a, C: Clone, T: Clone> Clone for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

impl<'a, C: Debug, T: Debug> Debug for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

impl<'a, C, T> FusedIterator for RChunksExact<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

Mark that the iterator will not resume after halting.

Auto Trait Implementations

impl<'a, C, T> Send for RChunksExact<'a, C, T>

impl<'a, C, T> Sync for RChunksExact<'a, C, T>

impl<'a, C, T> Unpin for RChunksExact<'a, C, T>

impl<'a, C, T> UnwindSafe for RChunksExact<'a, C, T> where
    C: RefUnwindSafe,
    T: RefUnwindSafe

impl<'a, C, T> RefUnwindSafe for RChunksExact<'a, C, T> where
    C: RefUnwindSafe,
    T: RefUnwindSafe

Blanket Implementations

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

impl<T> From<T> for T[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

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

type Error = Infallible

The type returned in the event of a conversion error.

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

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

The type returned in the event of a conversion error.

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

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

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