Function rustfst::algorithms::project
source · pub fn project<F: ExpandedFst + MutableFst>(
fst: &mut F,
project_input: bool
) -> Result<(), Error>
Expand description
This operation projects an FST onto its domain or range by either copying each arc’s input label to its output label or vice versa.
Example : Project input
use rustfst::utils::{acceptor, transducer};
use rustfst::semirings::{Semiring, IntegerWeight};
use rustfst::fst_impls::VectorFst;
use rustfst::algorithms::project;
let mut fst : VectorFst<IntegerWeight> = transducer(vec![2].into_iter(), vec![3].into_iter()).unwrap();
project(&mut fst, true).unwrap();
assert_eq!(fst, acceptor(vec![2].into_iter()).unwrap());
Example : Project output
use rustfst::utils::{acceptor, transducer};
use rustfst::semirings::{Semiring, IntegerWeight};
use rustfst::fst_impls::VectorFst;
use rustfst::algorithms::project;
let mut fst : VectorFst<IntegerWeight> = transducer(vec![2].into_iter(), vec![3].into_iter()).unwrap();
project(&mut fst, false).unwrap();
assert_eq!(fst, acceptor(vec![3].into_iter()).unwrap());