pub struct Product<A, B>(pub A, pub B);Expand description
Intersection product of two bottom-up automata.
Product(a, b) accepts exactly the trees accepted by both component
automata. Its state is a pair (state_from_a, state_from_b).
The generic BottomUpTa implementation asks both sides for possible
parent states and emits their cartesian product. When both components are
deterministic, Product also implements DetBottomUpTa and avoids that
result-set enumeration. If both components implement
IndexedBottomUpTa, the product also supports indexed rule joins for
sibling-finder-style parsing algorithms.
Tuple Fields§
§0: A§1: BTrait Implementations§
Source§impl<A, B> BottomUpTa for Product<A, B>where
A: BottomUpTa,
B: BottomUpTa,
impl<A, B> BottomUpTa for Product<A, B>where
A: BottomUpTa,
B: BottomUpTa,
impl<A: Copy, B: Copy> Copy for Product<A, B>
Source§impl<A, B> DetBottomUpTa for Product<A, B>where
A: DetBottomUpTa,
B: DetBottomUpTa,
impl<A, B> DetBottomUpTa for Product<A, B>where
A: DetBottomUpTa,
B: DetBottomUpTa,
impl<A: Eq, B: Eq> Eq for Product<A, B>
Source§impl<A, B> IndexedBottomUpTa for Product<A, B>where
A: IndexedBottomUpTa,
B: IndexedBottomUpTa,
impl<A, B> IndexedBottomUpTa for Product<A, B>where
A: IndexedBottomUpTa,
B: IndexedBottomUpTa,
Source§impl<A: PartialEq, B: PartialEq> PartialEq for Product<A, B>
impl<A: PartialEq, B: PartialEq> PartialEq for Product<A, B>
impl<A: PartialEq, B: PartialEq> StructuralPartialEq for Product<A, B>
Auto Trait Implementations§
impl<A, B> Freeze for Product<A, B>
impl<A, B> RefUnwindSafe for Product<A, B>where
A: RefUnwindSafe,
B: RefUnwindSafe,
impl<A, B> Send for Product<A, B>
impl<A, B> Sync for Product<A, B>
impl<A, B> Unpin for Product<A, B>
impl<A, B> UnsafeUnpin for Product<A, B>where
A: UnsafeUnpin,
B: UnsafeUnpin,
impl<A, B> UnwindSafe for Product<A, B>where
A: UnwindSafe,
B: UnwindSafe,
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
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<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.