divvunspell/transducer/
symbol_transition.rs

1use crate::types::{SymbolNumber, TransitionTableIndex, Weight};
2
3#[derive(Debug, Clone)]
4pub struct SymbolTransition {
5    target: Option<TransitionTableIndex>,
6    symbol: Option<SymbolNumber>,
7    weight: Option<Weight>,
8}
9
10impl SymbolTransition {
11    pub fn new(
12        target: Option<TransitionTableIndex>,
13        symbol: Option<SymbolNumber>,
14        weight: Option<Weight>,
15    ) -> SymbolTransition {
16        SymbolTransition {
17            target,
18            symbol,
19            weight,
20        }
21    }
22
23    #[inline(always)]
24    pub fn target(&self) -> Option<TransitionTableIndex> {
25        self.target
26    }
27
28    #[inline(always)]
29    pub fn symbol(&self) -> Option<SymbolNumber> {
30        self.symbol
31    }
32
33    #[inline(always)]
34    pub fn weight(&self) -> Option<Weight> {
35        self.weight
36    }
37
38    #[inline(always)]
39    pub fn clone_with_epsilon_symbol(&self) -> SymbolTransition {
40        SymbolTransition {
41            target: self.target,
42            symbol: Some(0),
43            weight: self.weight,
44        }
45    }
46}