[][src]Struct bitvec::slice::Iter

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

State keeper for 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 Iter<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

type Item = bool

The type of the elements being iterated over.

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

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

Parameters

  • &mut self

Returns

The leading bit in the iterator, if any.

Examples

use bitvec::prelude::*;

let bits = &1u8.as_bitslice::<LittleEndian>()[.. 2];
let mut iter = bits.iter();
assert!(iter.next().unwrap());
assert!(!iter.next().unwrap());
assert!(iter.next().is_none());

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

Hints at the number of bits remaining in the iterator.

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

Parameters

  • &self

Returns

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

Examples

use bitvec::prelude::*;

let bits = &0x4Bu8.as_bitslice::<BigEndian>()[.. 2];
let mut iter = bits.iter();
assert_eq!(iter.size_hint(), (2, Some(2)));
iter.next();
assert_eq!(iter.size_hint(), (1, Some(1)));
iter.next();
assert_eq!(iter.size_hint(), (0, Some(0)));

fn count(self) -> usize[src]

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

Parameters

  • self

Returns

The number of bits remaining in the iterator.

Examples

use bitvec::prelude::*;

let bits = 0x4Bu8.as_bitslice::<BigEndian>();
assert_eq!(bits.iter().count(), 8);

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

Advances the iterator by n bits, starting from zero.

Parameters

  • &mut self
  • n: The number of bits 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 bits.

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 iter = bits.iter();
assert!(iter.nth(6).unwrap());
assert!(!iter.nth(0).unwrap());
assert!(iter.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 Iter<'a, C, T> where
    C: Cursor,
    T: 'a + BitStore
[src]

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

Produces the next bit from the back of the slice.

Parameters

  • &mut self

Returns

The last bit in the slice, if any.

Examples

use bitvec::prelude::*;

let bits = &1u8.as_bitslice::<BigEndian>()[6 ..];
let mut iter = bits.iter();
assert!(iter.next_back().unwrap());
assert!(!iter.next_back().unwrap());
assert!(iter.next_back().is_none());

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

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

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

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

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

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

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