pub struct RepeatClone<T> {
item: T,
}
impl<T> Iterator for RepeatClone<T>
where
T: Clone,
{
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
Some(self.item.clone())
}
}
pub fn repeat_clone<T>(item: T) -> RepeatClone<T>
where
T: Clone,
{
RepeatClone { item }
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_repeat_clone() {
let mut iter = repeat_clone(42);
assert_eq!(iter.next(), Some(42));
assert_eq!(iter.next(), Some(42));
assert_eq!(iter.next(), Some(42));
}
}