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