[][src]Trait futures_test_sink::fuse_last::IteratorExt

pub trait IteratorExt: Iterator {
    fn fuse_last(self) -> FuseLast<Self, Self::Item>
    where
        Self: Sized,
        Self::Item: Clone
; }

Extension trait for Iterator that allow use FuseLast in chain-like manner.

Required methods

Important traits for FuseLast<I, I::Item>
fn fuse_last(self) -> FuseLast<Self, Self::Item> where
    Self: Sized,
    Self::Item: Clone

Creates an iterator that will be fused on last element forever.

After an iterator returns None, future calls may or may not yield Some(T) again. fuse_last() adapts an iterator, ensuring that after a None is given from self iter, it will forever return last received element from inner iterator.

Examples

use futures_test_sink::fuse_last::IteratorExt;

let iter = vec![1, 2].into_iter();
let mut fuse_last_iter = iter.fuse_last();
assert_eq!(Some(1), fuse_last_iter.next());
assert_eq!(Some(2), fuse_last_iter.next());
assert_eq!(Some(2), fuse_last_iter.next());

The only way to return None is empty inner iterator.

use futures_test_sink::fuse_last::IteratorExt;
use std::iter::empty;

let mut fuse_last_iter = empty::<()>().fuse_last();
assert_eq!(None, fuse_last_iter.next());
assert_eq!(None, fuse_last_iter.next());
Loading content...

Implementors

impl<T: Iterator> IteratorExt for T[src]

Loading content...