use crate::semirings::Semiring;
use crate::{Arc, StateId, SymbolTable};
use std::rc::Rc;
#[derive(Debug, PartialEq, Clone)]
pub struct ConstFst<W: Semiring> {
pub(crate) states: Vec<ConstState<W>>,
pub(crate) arcs: Vec<Arc<W>>,
pub(crate) start: Option<StateId>,
pub(crate) isymt: Option<Rc<SymbolTable>>,
pub(crate) osymt: Option<Rc<SymbolTable>>,
}
#[derive(Debug, Clone, PartialEq, Default)]
pub(crate) struct ConstState<W: Semiring> {
pub(crate) final_weight: Option<W>,
pub(crate) pos: usize,
pub(crate) narcs: usize,
pub(crate) niepsilons: usize,
pub(crate) noepsilons: usize,
}