pub struct DefaultComposeFilter;Expand description
Default composition filter implementing standard label matching.
This filter matches arcs when arc1.olabel == arc2.ilabel, handling epsilon
transitions by allowing them to match any label. The composed arc takes
ilabel from arc1 and olabel from arc2.
§Epsilon Handling
- Epsilon output from FST1 (
arc1.olabel == 0) matches any FST2 input - Epsilon input in FST2 (
arc2.ilabel == 0) matches any FST1 output - Both epsilon: composed arc is epsilon
§Example
use arcweight::prelude::*;
let mut fst1 = VectorFst::<TropicalWeight>::new();
let s0 = fst1.add_state();
let s1 = fst1.add_state();
fst1.set_start(s0);
fst1.set_final(s1, TropicalWeight::one());
fst1.add_arc(s0, Arc::new(1, 2, TropicalWeight::new(0.5), s1));
let mut fst2 = VectorFst::<TropicalWeight>::new();
let t0 = fst2.add_state();
let t1 = fst2.add_state();
fst2.set_start(t0);
fst2.set_final(t1, TropicalWeight::one());
fst2.add_arc(t0, Arc::new(2, 3, TropicalWeight::new(0.3), t1));
// Compose using default filter
let result: VectorFst<TropicalWeight> = compose_default(&fst1, &fst2)?;Trait Implementations§
Source§impl Clone for DefaultComposeFilter
impl Clone for DefaultComposeFilter
Source§fn clone(&self) -> DefaultComposeFilter
fn clone(&self) -> DefaultComposeFilter
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<W: Semiring> ComposeFilter<W> for DefaultComposeFilter
impl<W: Semiring> ComposeFilter<W> for DefaultComposeFilter
Source§type FilterState = ()
type FilterState = ()
Associated state type for tracking filter context across transitions. Read more
Source§fn start() -> Self::FilterState
fn start() -> Self::FilterState
Returns the initial filter state for composition start.
Source§fn filter_arc(
&self,
arc1: &Arc<W>,
arc2: &Arc<W>,
_fs: &Self::FilterState,
) -> Option<(Arc<W>, Self::FilterState)>
fn filter_arc( &self, arc1: &Arc<W>, arc2: &Arc<W>, _fs: &Self::FilterState, ) -> Option<(Arc<W>, Self::FilterState)>
Determines if two arcs can be composed and returns the resulting arc. Read more
impl Copy for DefaultComposeFilter
Source§impl Debug for DefaultComposeFilter
impl Debug for DefaultComposeFilter
Source§impl Default for DefaultComposeFilter
impl Default for DefaultComposeFilter
Source§fn default() -> DefaultComposeFilter
fn default() -> DefaultComposeFilter
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for DefaultComposeFilter
impl RefUnwindSafe for DefaultComposeFilter
impl Send for DefaultComposeFilter
impl Sync for DefaultComposeFilter
impl Unpin for DefaultComposeFilter
impl UnsafeUnpin for DefaultComposeFilter
impl UnwindSafe for DefaultComposeFilter
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.