/// An iterator adaptor that flattens `Result::Ok` values and /// allows `Result::Err` values through unchanged. /// /// See [`.flatten_ok()`](crate::Itertools::flatten_ok) for more information. #[must_use = "iterator adaptors are lazy and do nothing unless consumed"] pubstruct FlattenOk<I, T, E> where
I: Iterator<Item = Result<T, E>>,
T: IntoIterator,
{
iter: I,
inner_front: Option<T::IntoIter>,
inner_back: Option<T::IntoIter>,
}
impl<I, T, E> Iterator for FlattenOk<I, T, E> where
I: Iterator<Item = Result<T, E>>,
T: IntoIterator,
{ type Item = Result<T::Item, E>;
// This is necessary for the iterator to implement `FusedIterator` // with only the original iterator being fused. self.inner_back = None;
} else { return None;
}
}
}
}
}
// This is necessary for the iterator to implement `FusedIterator` // with only the original iterator being fused. self.inner_front = None;
} else { return None;
}
}
}
}
}
/// Only the iterator being flattened needs to implement [`FusedIterator`]. impl<I, T, E> FusedIterator for FlattenOk<I, T, E> where
I: FusedIterator<Item = Result<T, E>>,
T: IntoIterator,
{
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.