Struct bitvec::slice::IterMut[][src]

#[repr(C)]
pub struct IterMut<'a, O, T> where
    O: BitOrder,
    T: BitStore
{ /* fields omitted */ }

Mutable BitSlice iterator.

This struct is created by the .iter_mut() method on BitSlices.

Original

slice::IterMut

Examples

Basic usage:

use bitvec::prelude::*;

let bits = bits![mut 0; 2];
for mut bit in bits.iter_mut() {
  *bit = true;
}
assert_eq!(bits, bits![1; 2]);

Implementations

impl<'a, O, T> IterMut<'a, O, T> where
    O: BitOrder,
    T: BitStore
[src]

pub fn into_bitslice(self) -> &'a mut BitSlice<O, T::Alias>

Notable traits for &'a BitSlice<O, T>

impl<'a, O, T> Read for &'a BitSlice<O, T> where
    O: BitOrder,
    T: BitStore,
    BitSlice<O, T>: BitField
impl<'a, O, T> Write for &'a mut BitSlice<O, T> where
    O: BitOrder,
    T: BitStore,
    BitSlice<O, T>: BitField
[src]

Views the underlying data as a subslice of the original data.

To avoid creating &mut references that alias, this is forced to consume the iterator.

Original

IterMut::into_slice

API Differences

As this views a BitSlice, rather than a [T] or [bool] slice, it has been renamed.

Examples

Basic usage:

use bitvec::prelude::*;

let bits = bits![mut 0, 1, 0];

{
  // Get the iterator:
  let mut iter = bits.iter_mut();
  // We move to the next element:
  iter.next();
  // So if we print what `into_bitslice`
  // returns here, we have "[10]":
  println!("{:b}", iter.into_slice());
}

// Now let’s modify a value of the slice:
{
  // First we get back the iterator:
  let mut iter = bits.iter_mut();
  // We change the value of the first bit of
  // the slice returned by the `next` method:
  *iter.next().unwrap() = true;
}
// Now bits is "[110]":
println!("{:b}", bits);

impl<'a, O, T> IterMut<'a, O, T> where
    O: BitOrder,
    T: BitStore
[src]

pub unsafe fn remove_alias(self) -> IterMutNoAlias<'a, O, T>[src]

Adapts the iterator to no longer mark its yielded items as aliased.

Safety

This adapter can only be used in contexts where only one yielded item will be alive at any time. This is most commonly true in for … in loops, so long as no subsequent adapter collects multiple yielded items into a collection where they are live simultaneously.

The items yielded by this iterator will not have an additional alias marker applied to them, so their use in an iteration sequence will not be penalized when the surrounding code guarantees that each item yielded by the iterator is destroyed before the next is produced.

This adapter does not convert the iterator to use T::Mem raw types, as it can be applied to an iterator over an already-aliased slice and must preserve its condition. Its only effect is to prevent the addition of a new T::Alias marker.

Trait Implementations

impl<O, T> Debug for IterMut<'_, O, T> where
    O: BitOrder,
    T: BitStore
[src]

impl<'a, O, T> DoubleEndedIterator for IterMut<'a, O, T> where
    O: BitOrder,
    T: BitStore
[src]

impl<O, T> ExactSizeIterator for IterMut<'_, O, T> where
    O: BitOrder,
    T: BitStore
[src]

impl<O, T> FusedIterator for IterMut<'_, O, T> where
    O: BitOrder,
    T: BitStore
[src]

impl<'a, O, T> Iterator for IterMut<'a, O, T> where
    O: BitOrder,
    T: BitStore
[src]

type Item = <usize as BitSliceIndex<'a, O, T::Alias>>::Mut

The type of the elements being iterated over.

impl<O, T> Send for IterMut<'_, O, T> where
    O: BitOrder,
    T: BitStore
[src]

impl<O, T> Sync for IterMut<'_, O, T> where
    O: BitOrder,
    T: BitStore
[src]

Auto Trait Implementations

impl<'a, O, T> RefUnwindSafe for IterMut<'a, O, T> where
    O: RefUnwindSafe,
    <T as BitStore>::Alias: RefUnwindSafe,
    <T as BitStore>::Mem: RefUnwindSafe

impl<'a, O, T> Unpin for IterMut<'a, O, T> where
    O: Unpin

impl<'a, O, T> !UnwindSafe for IterMut<'a, O, T>

Blanket Implementations

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

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

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

impl<T> Conv for T[src]

impl<T> Conv for T[src]

impl<T> FmtForward for T[src]

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

impl<T, U> Into<U> for T where
    U: From<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> Pipe for T where
    T: ?Sized
[src]

impl<T> Pipe for T[src]

impl<T> PipeAsRef for T[src]

impl<T> PipeBorrow for T[src]

impl<T> PipeDeref for T[src]

impl<T> PipeRef for T[src]

impl<T> Tap for T[src]

impl<T> Tap for T[src]

impl<T, U> TapAsRef<U> for T where
    U: ?Sized
[src]

impl<T, U> TapBorrow<U> for T where
    U: ?Sized
[src]

impl<T> TapDeref for T[src]

impl<T> TryConv for T[src]

impl<T> TryConv for T[src]

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.