Trait iterextd::SliceModifyIter

source ·
pub trait SliceModifyIter<T>
where Self: AsMut<[T]> + AsRef<[T]>,
{ // Provided methods fn gen_range_bounds(&self, size: usize) -> GenRangeBounds { ... } fn gen_tuple_bounds(&self, size: usize) -> StepBoundary<Range<usize>> { ... } fn modify_slice<F, I>(&mut self, iter: I, f: F) where I: Iterator, <I as Iterator>::Item: SliceIndex<[T], Output = [T]>, F: FnMut(&mut [T]) { ... } }
Expand description

Iterator with external slice indexing.

Provided Methods§

source

fn gen_range_bounds(&self, size: usize) -> GenRangeBounds

Create an iterator that returns RangeInclusive structures with index bounds from the slice.

§Panics

Panics if the step size is zero.

§Examples

Basic usage:

use iterextd::SliceModifyIter;

let val = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

let iter = val.gen_range_bounds(3);
let vec = iter.collect::<Vec<_>>();
assert_eq!(vec, vec![0..=2, 3..=5, 6..=8, 9..=10]);
source

fn gen_tuple_bounds(&self, size: usize) -> StepBoundary<Range<usize>>

Create an iterator that returns tuples with index bounds from the slice.

§Panics

Panics if the step size is zero.

§Examples

Basic usage:

use iterextd::SliceModifyIter;

let val = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let iter = val.gen_tuple_bounds(3);
let vec = iter.collect::<Vec<_>>();
assert_eq!(vec, vec![(0, 2), (3, 5), (6, 8), (9, 10)]);
source

fn modify_slice<F, I>(&mut self, iter: I, f: F)
where I: Iterator, <I as Iterator>::Item: SliceIndex<[T], Output = [T]>, F: FnMut(&mut [T]),

Modify a slice using an iterator with external slice indexing.

§Examples

Basic usage:

use iterextd::SliceModifyIter;

let mut vec = vec![0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let iter = vec.gen_range_bounds(2);
let logic = |e: &mut[i32]| {
    if e.len() == 2 {
        let one = e[0];
        e[0] = e[1];
        e[1] = one;
    }
};
let _ = vec.modify_slice(iter, logic);
assert_eq!(vec, vec![1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 10]);

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T> SliceModifyIter<T> for [T]

Implementors§