pub trait CloneIterator: Iterator {
fn clone_box(&self) -> Box<dyn CloneIterator<Item = Self::Item>>;
}
impl<T> CloneIterator for T
where
T: 'static + Iterator + Clone
{
#[inline]
fn clone_box(&self) -> Box<dyn CloneIterator<Item = Self::Item>> {
Box::new(self.clone())
}
}
pub struct Ripr {
top: Option<Rational>,
data: Box<dyn CloneIterator<Item = Rational>>
}
impl Iterator for Ripr {
type Item = Rational;
#[inline]
fn next(&mut self) -> Option<Self::Item> {