Skip to content

Commit f566d8c

Browse files
Andrewjturner314
Andrew
authored andcommitted
Forward more iterator methods (#614)
Forwarded some methods to `inner` iterator: - nth - collect - any - all - find - find_map - count - last - position
1 parent 2924f2e commit f566d8c

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

src/iterators/mod.rs

+97
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ mod windows;
1313
mod lanes;
1414
pub mod iter;
1515

16+
use std::iter::FromIterator;
1617
use std::marker::PhantomData;
1718
use std::ptr;
1819

@@ -388,6 +389,54 @@ impl<'a, A, D: Dimension> Iterator for Iter<'a, A, D> {
388389
{
389390
either!(self.inner, iter => iter.fold(init, g))
390391
}
392+
393+
fn nth(&mut self, n: usize) -> Option<Self::Item> {
394+
either_mut!(self.inner, iter => iter.nth(n))
395+
}
396+
397+
fn collect<B>(self) -> B
398+
where B: FromIterator<Self::Item>
399+
{
400+
either!(self.inner, iter => iter.collect())
401+
}
402+
403+
fn all<F>(&mut self, f: F) -> bool
404+
where F: FnMut(Self::Item) -> bool
405+
{
406+
either_mut!(self.inner, iter => iter.all(f))
407+
}
408+
409+
fn any<F>(&mut self, f: F) -> bool
410+
where F: FnMut(Self::Item) -> bool
411+
{
412+
either_mut!(self.inner, iter => iter.any(f))
413+
}
414+
415+
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
416+
where P: FnMut(&Self::Item) -> bool
417+
{
418+
either_mut!(self.inner, iter => iter.find(predicate))
419+
}
420+
421+
fn find_map<B, F>(&mut self, f: F) -> Option<B>
422+
where F: FnMut(Self::Item) -> Option<B>
423+
{
424+
either_mut!(self.inner, iter => iter.find_map(f))
425+
}
426+
427+
fn count(self) -> usize {
428+
either!(self.inner, iter => iter.count())
429+
}
430+
431+
fn last(self) -> Option<Self::Item> {
432+
either!(self.inner, iter => iter.last())
433+
}
434+
435+
fn position<P>(&mut self, predicate: P) -> Option<usize>
436+
where P: FnMut(Self::Item) -> bool,
437+
{
438+
either_mut!(self.inner, iter => iter.position(predicate))
439+
}
391440
}
392441

393442
impl<'a, A> DoubleEndedIterator for Iter<'a, A, Ix1> {
@@ -455,6 +504,54 @@ impl<'a, A, D: Dimension> Iterator for IterMut<'a, A, D> {
455504
{
456505
either!(self.inner, iter => iter.fold(init, g))
457506
}
507+
508+
fn nth(&mut self, n: usize) -> Option<Self::Item> {
509+
either_mut!(self.inner, iter => iter.nth(n))
510+
}
511+
512+
fn collect<B>(self) -> B
513+
where B: FromIterator<Self::Item>
514+
{
515+
either!(self.inner, iter => iter.collect())
516+
}
517+
518+
fn all<F>(&mut self, f: F) -> bool
519+
where F: FnMut(Self::Item) -> bool
520+
{
521+
either_mut!(self.inner, iter => iter.all(f))
522+
}
523+
524+
fn any<F>(&mut self, f: F) -> bool
525+
where F: FnMut(Self::Item) -> bool
526+
{
527+
either_mut!(self.inner, iter => iter.any(f))
528+
}
529+
530+
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
531+
where P: FnMut(&Self::Item) -> bool
532+
{
533+
either_mut!(self.inner, iter => iter.find(predicate))
534+
}
535+
536+
fn find_map<B, F>(&mut self, f: F) -> Option<B>
537+
where F: FnMut(Self::Item) -> Option<B>
538+
{
539+
either_mut!(self.inner, iter => iter.find_map(f))
540+
}
541+
542+
fn count(self) -> usize {
543+
either!(self.inner, iter => iter.count())
544+
}
545+
546+
fn last(self) -> Option<Self::Item> {
547+
either!(self.inner, iter => iter.last())
548+
}
549+
550+
fn position<P>(&mut self, predicate: P) -> Option<usize>
551+
where P: FnMut(Self::Item) -> bool,
552+
{
553+
either_mut!(self.inner, iter => iter.position(predicate))
554+
}
458555
}
459556

460557
impl<'a, A> DoubleEndedIterator for IterMut<'a, A, Ix1> {

0 commit comments

Comments
 (0)