[][src]Struct bitvec::slice::RChunks

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

State keeper for reverse chunked 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.

Trait Implementations

impl<'a, C, T> Iterator for RChunks<'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 = bits.rchunks(5);
assert_eq!(rchunks.next(), Some(&bits[3 ..]));
assert_eq!(rchunks.next(), Some(&bits[.. 3]));
assert!(rchunks.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 = bits.rchunks(5);
assert_eq!(rchunks.size_hint(), (2, Some(2)));
rchunks.next();
assert_eq!(rchunks.size_hint(), (1, Some(1)));
rchunks.next();
assert_eq!(rchunks.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(3).count(), 3);

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 = 2u8.as_bitslice::<BigEndian>();
let mut rchunks = bits.rchunks(3);
assert_eq!(rchunks.nth(2), Some(&bits[0 .. 2]));
assert!(rchunks.nth(0).is_none());

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

Consumes the iterator, returning only the final chunk.

Parameters

  • self

Returns

The last chunk in the iterator slice, if any.

Examples

use bitvec::prelude::*;

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

impl<'a, C, T> DoubleEndedIterator for RChunks<'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 = bits.rchunks(5);
assert_eq!(rchunks.next_back(), Some(&bits[.. 3]));
assert_eq!(rchunks.next_back(), Some(&bits[3 ..]));
assert!(rchunks.next_back().is_none());

impl<'a, C, T> ExactSizeIterator for RChunks<'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 RChunks<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

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

impl<'a, C, T> FusedIterator for RChunks<'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 RChunks<'a, C, T>

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

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

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

impl<'a, C, T> RefUnwindSafe for RChunks<'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]