pub struct SquaringAMDemodulator<'a> { iterator: Box + 'a>, } impl<'a> SquaringAMDemodulator<'a> { pub fn from(iterator1: I) -> SquaringAMDemodulator<'a> where I: Iterator + 'a, { SquaringAMDemodulator { iterator: Box::new(iterator1), } } } impl<'a> Iterator for SquaringAMDemodulator<'a> { type Item = f32; fn next(&mut self) -> Option { match self.iterator.next() { Some(x) => Some((x * x).sqrt()), None => None, } } }