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