color_span/view/
iter.rs

1use internship::IStr;
2
3use code_span::CodeViewIter;
4
5use crate::{view::ColorSpan, ColorView};
6/// # Arguments
7///
8/// * `text`:
9///
10/// returns: TextColorView
11///
12/// # Examples
13///
14/// ```
15/// use color_span::ColorView;
16/// ```
17#[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}