1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
use std::cell::RefCell;
use crate::{MarkdownExt, Share, frontmatter::FrontMatter};
#[derive(new)]
pub struct Raw<I, T>
where
I: Iterator<Item = T>,
{
frontmatter: Share<RefCell<Option<FrontMatter>>>,
iter: I,
}
impl<I, T> Iterator for Raw<I, T>
where
I: Iterator<Item = T>,
{
type Item = T;
fn next(&mut self) -> Option<Self::Item> {
self.iter.next()
}
}
impl<I, T> MarkdownExt<T> for Raw<I, T>
where
I: Iterator<Item = T>,
{
fn frontmatter(&mut self) -> &mut Share<RefCell<Option<FrontMatter>>> {
&mut self.frontmatter
}
}