unobtanium_segmenter/chain/
segmenter.rs1use crate::segmentation::Segmenter;
2use crate::SegmentedToken;
3use crate::SubdivisionMap;
4
5pub trait ChainSegmenter<'a, S: Segmenter>
11where
12 Self: 'a,
13{
14 fn chain_segmenter(self, segmenter: &S) -> impl Iterator<Item = SegmentedToken<'a>>;
16}
17
18impl<'a, S: Segmenter + 'a, I: Iterator<Item = SegmentedToken<'a>>> ChainSegmenter<'a, S> for I
19where
20 Self: 'a,
21{
22 fn chain_segmenter(self, segmenter: &S) -> impl Iterator<Item = SegmentedToken<'a>> {
23 return SubdivisionMap::new(self, |t| segmenter.subdivide(t));
24 }
25}