use crate::{Generator, GeneratorResult, ValueResult};
#[inline]
pub fn from_iter<I: IntoIterator>(iterable: I) -> FromIter<I::IntoIter> {
FromIter(iterable.into_iter())
}
#[derive(Clone)]
pub struct FromIter<I>(I);
impl<I: Iterator> Generator for FromIter<I> {
type Output = I::Item;
#[inline]
fn run(&mut self, mut output: impl FnMut(Self::Output) -> ValueResult) -> GeneratorResult {
for v in &mut self.0 {
if output(v) == ValueResult::Stop {
return GeneratorResult::Stopped;
}
}
GeneratorResult::Complete
}
}