Struct rustfst::fst_properties::FstProperties
source · pub struct FstProperties(/* private fields */);
Expand description
The property bits here assert facts about an FST. If individual bits are added, then the composite fst_properties below, the property functions and property names in fst_properties.cc, and TestProperties() in test-fst_properties.h should be updated. For each of these fst_properties below there is a pair of property bits, one positive and one negative. If the positive bit is set, the property is true. If the negative bit is set, the property is false. If neither is set, the property has unknown value. Both should never be simultaneously set. The individual positive and negative bit pairs should be adjacent with the positive bit at an odd and lower position.
Implementations§
source§impl FstProperties
impl FstProperties
sourcepub const NOT_ACCEPTOR: Self = _
pub const NOT_ACCEPTOR: Self = _
ilabel != olabel for some transition.
sourcepub const I_DETERMINISTIC: Self = _
pub const I_DETERMINISTIC: Self = _
ilabels unique leaving each state.
sourcepub const NOT_I_DETERMINISTIC: Self = _
pub const NOT_I_DETERMINISTIC: Self = _
ilabels not unique leaving some state.
sourcepub const O_DETERMINISTIC: Self = _
pub const O_DETERMINISTIC: Self = _
olabels unique leaving each state.
sourcepub const NOT_O_DETERMINISTIC: Self = _
pub const NOT_O_DETERMINISTIC: Self = _
olabels not unique leaving some state.
sourcepub const NO_EPSILONS: Self = _
pub const NO_EPSILONS: Self = _
FST has no input/output epsilons.
sourcepub const I_EPSILONS: Self = _
pub const I_EPSILONS: Self = _
FST has input epsilons.
sourcepub const NO_I_EPSILONS: Self = _
pub const NO_I_EPSILONS: Self = _
FST has no input epsilons.
sourcepub const O_EPSILONS: Self = _
pub const O_EPSILONS: Self = _
FST has output epsilons.
sourcepub const NO_O_EPSILONS: Self = _
pub const NO_O_EPSILONS: Self = _
FST has no output epsilons.
sourcepub const I_LABEL_SORTED: Self = _
pub const I_LABEL_SORTED: Self = _
ilabels sorted wrt < for each state.
sourcepub const NOT_I_LABEL_SORTED: Self = _
pub const NOT_I_LABEL_SORTED: Self = _
ilabels not sorted wrt < for some state.
sourcepub const O_LABEL_SORTED: Self = _
pub const O_LABEL_SORTED: Self = _
olabels sorted wrt < for each state.
sourcepub const NOT_O_LABEL_SORTED: Self = _
pub const NOT_O_LABEL_SORTED: Self = _
olabels not sorted wrt < for some state.
sourcepub const UNWEIGHTED: Self = _
pub const UNWEIGHTED: Self = _
Only trivial transition and final weights.
sourcepub const INITIAL_CYCLIC: Self = _
pub const INITIAL_CYCLIC: Self = _
FST has cycles containing the initial state.
sourcepub const INITIAL_ACYCLIC: Self = _
pub const INITIAL_ACYCLIC: Self = _
FST has no cycles containing the initial state.
sourcepub const TOP_SORTED: Self = _
pub const TOP_SORTED: Self = _
FST is topologically sorted.
sourcepub const NOT_TOP_SORTED: Self = _
pub const NOT_TOP_SORTED: Self = _
FST is not topologically sorted.
sourcepub const ACCESSIBLE: Self = _
pub const ACCESSIBLE: Self = _
All states reachable from the initial state.
sourcepub const NOT_ACCESSIBLE: Self = _
pub const NOT_ACCESSIBLE: Self = _
Not all states reachable from the initial state.
sourcepub const COACCESSIBLE: Self = _
pub const COACCESSIBLE: Self = _
All states can reach a final state.
sourcepub const NOT_COACCESSIBLE: Self = _
pub const NOT_COACCESSIBLE: Self = _
Not all states can reach a final state.
sourcepub const STRING: Self = _
pub const STRING: Self = _
If NumStates() > 0, then state 0 is initial, state NumStates() - 1 is final, there is a transition from each non-final state i to state i + 1, and there are no other transitions.
sourcepub const NOT_STRING: Self = _
pub const NOT_STRING: Self = _
Not a string FST.
sourcepub const WEIGHTED_CYCLES: Self = _
pub const WEIGHTED_CYCLES: Self = _
FST has at least one weighted cycle.
sourcepub const UNWEIGHTED_CYCLES: Self = _
pub const UNWEIGHTED_CYCLES: Self = _
Only unweighted cycles.
source§impl FstProperties
impl FstProperties
sourcepub const fn bits(&self) -> u64
pub const fn bits(&self) -> u64
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
sourcepub const fn from_bits(bits: u64) -> Option<Self>
pub const fn from_bits(bits: u64) -> Option<Self>
Convert from a bits value.
This method will return None
if any unknown bits are set.
sourcepub const fn from_bits_truncate(bits: u64) -> Self
pub const fn from_bits_truncate(bits: u64) -> Self
Convert from a bits value, unsetting any unknown bits.
sourcepub const fn from_bits_retain(bits: u64) -> Self
pub const fn from_bits_retain(bits: u64) -> Self
Convert from a bits value exactly.
sourcepub fn from_name(name: &str) -> Option<Self>
pub fn from_name(name: &str) -> Option<Self>
Get a flags value with the bits of a flag with the given name set.
This method will return None
if name
is empty or doesn’t
correspond to any named flag.
sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Whether any set bits in a source flags value are also set in a target flags value.
sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Whether all set bits in a source flags value are also set in a target flags value.
sourcepub fn remove(&mut self, other: Self)
pub fn remove(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
remove
won’t truncate other
, but the !
operator will.
sourcepub fn toggle(&mut self, other: Self)
pub fn toggle(&mut self, other: Self)
The bitwise exclusive-or (^
) of the bits in two flags values.
sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Call insert
when value
is true
or remove
when value
is false
.
sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
The bitwise and (&
) of the bits in two flags values.
sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
The bitwise or (|
) of the bits in two flags values.
sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
The bitwise exclusive-or (^
) of the bits in two flags values.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
The bitwise negation (!
) of the bits in a flags value, truncating the result.
source§impl FstProperties
impl FstProperties
sourcepub const fn iter(&self) -> Iter<FstProperties>
pub const fn iter(&self) -> Iter<FstProperties>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
sourcepub const fn iter_names(&self) -> IterNames<FstProperties>
pub const fn iter_names(&self) -> IterNames<FstProperties>
Yield a set of contained named flags values.
This method is like iter
, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
source§impl FstProperties
impl FstProperties
sourcepub fn knows(self, props: FstProperties) -> bool
pub fn knows(self, props: FstProperties) -> bool
Check that all the props
passed as parameter are known.
Trait Implementations§
source§impl Binary for FstProperties
impl Binary for FstProperties
source§impl BitAnd for FstProperties
impl BitAnd for FstProperties
source§impl BitAndAssign for FstProperties
impl BitAndAssign for FstProperties
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
The bitwise and (&
) of the bits in two flags values.
source§impl BitOr for FstProperties
impl BitOr for FstProperties
source§fn bitor(self, other: FstProperties) -> Self
fn bitor(self, other: FstProperties) -> Self
The bitwise or (|
) of the bits in two flags values.
§type Output = FstProperties
type Output = FstProperties
|
operator.source§impl BitOrAssign for FstProperties
impl BitOrAssign for FstProperties
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
The bitwise or (|
) of the bits in two flags values.
source§impl BitXor for FstProperties
impl BitXor for FstProperties
source§impl BitXorAssign for FstProperties
impl BitXorAssign for FstProperties
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
The bitwise exclusive-or (^
) of the bits in two flags values.
source§impl Clone for FstProperties
impl Clone for FstProperties
source§fn clone(&self) -> FstProperties
fn clone(&self) -> FstProperties
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for FstProperties
impl Debug for FstProperties
source§impl Extend<FstProperties> for FstProperties
impl Extend<FstProperties> for FstProperties
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
The bitwise or (|
) of the bits in each flags value.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl Flags for FstProperties
impl Flags for FstProperties
source§const FLAGS: &'static [Flag<FstProperties>] = _
const FLAGS: &'static [Flag<FstProperties>] = _
source§fn from_bits_retain(bits: u64) -> FstProperties
fn from_bits_retain(bits: u64) -> FstProperties
source§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
source§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
source§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
source§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
source§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
source§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|
) of the bits in two flags values.source§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!
). Read moresource§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^
) of the bits in two flags values.source§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&
) of the bits in two flags values.source§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!
). Read moresource§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^
) of the bits in two flags values.source§fn complement(self) -> Self
fn complement(self) -> Self
!
) of the bits in a flags value, truncating the result.source§impl FromIterator<FstProperties> for FstProperties
impl FromIterator<FstProperties> for FstProperties
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
The bitwise or (|
) of the bits in each flags value.
source§impl Hash for FstProperties
impl Hash for FstProperties
source§impl IntoIterator for FstProperties
impl IntoIterator for FstProperties
source§impl LowerHex for FstProperties
impl LowerHex for FstProperties
source§impl Not for FstProperties
impl Not for FstProperties
source§impl Octal for FstProperties
impl Octal for FstProperties
source§impl Ord for FstProperties
impl Ord for FstProperties
source§fn cmp(&self, other: &FstProperties) -> Ordering
fn cmp(&self, other: &FstProperties) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for FstProperties
impl PartialEq for FstProperties
source§fn eq(&self, other: &FstProperties) -> bool
fn eq(&self, other: &FstProperties) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for FstProperties
impl PartialOrd for FstProperties
source§fn partial_cmp(&self, other: &FstProperties) -> Option<Ordering>
fn partial_cmp(&self, other: &FstProperties) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl PublicFlags for FstProperties
impl PublicFlags for FstProperties
source§impl Shl<usize> for FstProperties
impl Shl<usize> for FstProperties
source§impl Shr<usize> for FstProperties
impl Shr<usize> for FstProperties
source§impl Sub for FstProperties
impl Sub for FstProperties
source§fn sub(self, other: Self) -> Self
fn sub(self, other: Self) -> Self
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
§type Output = FstProperties
type Output = FstProperties
-
operator.source§impl SubAssign for FstProperties
impl SubAssign for FstProperties
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
source§impl UpperHex for FstProperties
impl UpperHex for FstProperties
impl Copy for FstProperties
impl Eq for FstProperties
impl StructuralPartialEq for FstProperties
Auto Trait Implementations§
impl Freeze for FstProperties
impl RefUnwindSafe for FstProperties
impl Send for FstProperties
impl Sync for FstProperties
impl Unpin for FstProperties
impl UnwindSafe for FstProperties
Blanket Implementations§
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
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>
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>
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 more