pub trait LookaheadMatcher<W: Semiring, F: Fst<W>, B: Borrow<F>>: Matcher<W, F, B> {
type MatcherData: Clone;
fn data(&self) -> Option<&Arc<Self::MatcherData>>;
fn new_with_data(
fst: B,
match_type: MatchType,
data: Option<Arc<Self::MatcherData>>
) -> Result<Self>
where
Self: Sized;
fn create_data<F2: Fst<W>, BF2: Borrow<F2>>(
fst: BF2,
match_type: MatchType
) -> Result<Option<Self::MatcherData>>;
fn init_lookahead_fst<LF: Fst<W>, BLF: Borrow<LF> + Clone>(
&mut self,
lfst: &BLF
) -> Result<()>;
fn lookahead_fst<LF: Fst<W>, BLF: Borrow<LF>>(
&self,
matcher_state: StateId,
lfst: &BLF,
lfst_state: StateId
) -> Result<Option<LookAheadMatcherData<W>>>;
fn lookahead_label(&self, state: StateId, label: Label) -> Result<bool>;
fn lookahead_prefix(
&self,
tr: &mut Tr<W>,
la_matcher_data: &LookAheadMatcherData<W>
) -> bool;
}