[][src]Macro rustfst::fst_path

macro_rules! fst_path {
    ( $( $x:expr ),*) => { ... };
    ( $( $x:expr ),* => $( $y:expr ),* ) => { ... };
    ( $( $x:expr ),* ; $weight:expr) => { ... };
    ( $( $x:expr ),* => $( $y:expr ),* ; $weight:expr) => { ... };
}

Creates a Path containing the arguments.

There are multiple forms to this macro :

  • Create an unweighted acceptor path :
let path : FstPath<IntegerWeight> = fst_path![1,2,3];
assert_eq!(path.ilabels, vec![1,2,3]);
assert_eq!(path.olabels, vec![1,2,3]);
assert_eq!(path.weight, IntegerWeight::one());
  • Create an unweighted transducer path :
let path : FstPath<IntegerWeight> = fst_path![1,2,3 => 1,2,4];
assert_eq!(path.ilabels, vec![1,2,3]);
assert_eq!(path.olabels, vec![1,2,4]);
assert_eq!(path.weight, IntegerWeight::one());
  • Create a weighted acceptor path :
let path : FstPath<IntegerWeight> = fst_path![1,2,3; 18];
assert_eq!(path.ilabels, vec![1,2,3]);
assert_eq!(path.olabels, vec![1,2,3]);
assert_eq!(path.weight, IntegerWeight::new(18));
  • Create a weighted transducer path :
let path : FstPath<IntegerWeight> = fst_path![1,2,3 => 1,2,4; 18];
assert_eq!(path.ilabels, vec![1,2,3]);
assert_eq!(path.olabels, vec![1,2,4]);
assert_eq!(path.weight, IntegerWeight::new(18));