1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use std::fmt::Debug; use anyhow::Result; use crate::fst_properties::FstProperties; use crate::semirings::Semiring; use crate::{StateId, TrsVec}; pub trait FstOp<W: Semiring>: Debug { // was FstImpl fn compute_start(&self) -> Result<Option<StateId>>; fn compute_trs(&self, id: usize) -> Result<TrsVec<W>>; fn compute_final_weight(&self, id: StateId) -> Result<Option<W>>; // Computed at construction time fn properties(&self) -> FstProperties; }