unobtanium_segmenter/chain/
augmenter.rs1use crate::augmentation::Augmenter;
2use crate::SegmentedToken;
3
4pub trait ChainAugmenter<'a, A: Augmenter> {
10 fn chain_augmenter(self, augmenter: &A) -> impl Iterator<Item = SegmentedToken<'a>>;
12
13 fn chain_owned_augmenter(self, augmenter: A) -> impl Iterator<Item = SegmentedToken<'a>>;
15
16}
17
18impl<'a, A: Augmenter + 'a, I: Iterator<Item = SegmentedToken<'a>>> ChainAugmenter<'a, A> for I
19where
20 Self: 'a,
21{
22 fn chain_augmenter(self, augmenter: &A) -> impl Iterator<Item = SegmentedToken<'a>> {
23 return self.map(|t| augmenter.augment(t));
24 }
25
26 fn chain_owned_augmenter(self, augmenter: A) -> impl Iterator<Item = SegmentedToken<'a>> {
27 return self.map(move |t| augmenter.augment(t));
28 }
29
30}