1use internship::IStr;
2
3use code_span::CodeViewIter;
4
5use crate::{view::ColorSpan, ColorView};
6#[derive(Debug)]
18pub struct ColorViewIter<'i> {
19 iter: CodeViewIter<'i, IStr>,
20}
21
22impl<'i> IntoIterator for &'i ColorView {
23 type Item = ColorSpan;
24 type IntoIter = ColorViewIter<'i>;
25
26 fn into_iter(self) -> Self::IntoIter {
27 ColorViewIter { iter: self.span.into_iter() }
28 }
29}
30
31impl Iterator for ColorViewIter<'_> {
32 type Item = ColorSpan;
33
34 fn next(&mut self) -> Option<Self::Item> {
35 let item = self.iter.next()?;
36 Some(ColorSpan { color: item.info.unwrap_or_default(), text: item.text })
37 }
38}