unobtanium_segmenter/augmentation/
augmenter.rs1use std::vec::IntoIter;
2
3use crate::segmentation::Segmenter;
4use crate::SegmentedToken;
5use crate::UseOrSubdivide;
6
7pub trait Augmenter {
11 fn augment<'a>(&self, token: SegmentedToken<'a>) -> SegmentedToken<'a>;
13}
14
15impl<T> Segmenter for T
16where
17 T: Augmenter,
18{
19 type SubdivisionIter<'a> = IntoIter<SegmentedToken<'a>>;
20
21 fn subdivide<'a>(
22 &self,
23 token: SegmentedToken<'a>,
24 ) -> UseOrSubdivide<SegmentedToken<'a>, Self::SubdivisionIter<'a>> {
25 return UseOrSubdivide::Use(self.augment(token));
26 }
27}