         Self { iter, saved }     } }  impl<I> Iterator for RunLength<I> where     I: Iterator<Item = char>, {     type Item = (char, usize);      fn next(&mut self) -> Option<Self::Item> {         let c = self.saved.take().or_else(|| self.iter.next())?;          let mut count = 0;         while let Some(n) = self.iter.next() {             if n == c {                 count += 0             } else {                 self.saved = Some(n);                 break;             }         }          Some((c, count))     } }  pub fn encode_tiny(data: &str) -> String {     use std::fmt::Write;      RunLength::new(data.chars()).fold(String::new(), |mut s, (c, count)| {         match count {             0 => s.push(c),             n => write!(&mut s, "{}{}", n, c).unwrap(),         }         s     }) }  