[][src]Struct gf::ai::executor::FixpointExecutor

pub struct FixpointExecutor<'a, 'i, D, I, T> where
    D: Direction,
    I: Interp<'a, D>,
    I::State: Meet,
    T: IpaTactic<I::State>, 
{ /* fields omitted */ }

🟢 Iterative executor that propagates state across edges until a fixed point is reached.

The interpretation state is required to be a Meet semilattice, and the fixpoint found will be the maximum fixed point (MFP). If you want to find the least fixed point (LFP) instead, you can use the Flip adapter with a Join semilattice.

Implementations

impl<'a, 'i, D, I, T> FixpointExecutor<'a, 'i, D, I, T> where
    D: Direction,
    I: Interp<'a, D>,
    I::State: Meet,
    T: IpaTactic<I::State>, 
[src]

pub fn new(
    interp: &'i I,
    state: FixpointExecutorState<'a, D, I>,
    ipa_tactic: T
) -> Self
[src]

Create a fixed point executor.

pub fn interp(&self) -> &'i I[src]

Return the interpretation.

pub fn ipa_tactic(&self) -> &T[src]

Return the IPA tactic.

pub fn stack(&self) -> &[FixpointExecutorFrame<'a, D, I>][src]

Return a slice of saved stack frames ordered from deep to shallow.

pub fn state(&self) -> &FixpointExecutorState<'a, D, I>[src]

Return the current state.

pub fn into_state(self) -> FixpointExecutorState<'a, D, I>[src]

Consume the executor to extract its state.

Trait Implementations

impl<'a, 'i, D, I, T> FusedIterator for FixpointExecutor<'a, 'i, D, I, T> where
    D: Direction,
    I: Interp<'a, D>,
    I::State: Meet,
    T: IpaTactic<I::State>, 
[src]

impl<'a, 'i, D, I, T> Iterator for FixpointExecutor<'a, 'i, D, I, T> where
    D: Direction,
    I: Interp<'a, D>,
    I::State: Meet,
    T: IpaTactic<I::State>, 
[src]

type Item = ()

The type of the elements being iterated over.

Auto Trait Implementations

impl<'a, 'i, D, I, T> RefUnwindSafe for FixpointExecutor<'a, 'i, D, I, T> where
    D: RefUnwindSafe,
    I: RefUnwindSafe,
    T: RefUnwindSafe,
    <I as Interp<'a, D>>::State: RefUnwindSafe

impl<'a, 'i, D, I, T> Send for FixpointExecutor<'a, 'i, D, I, T> where
    D: Send + Sync,
    I: Sync,
    T: Send,
    <I as Interp<'a, D>>::State: Send

impl<'a, 'i, D, I, T> Sync for FixpointExecutor<'a, 'i, D, I, T> where
    D: Sync,
    I: Sync,
    T: Sync,
    <I as Interp<'a, D>>::State: Sync

impl<'a, 'i, D, I, T> Unpin for FixpointExecutor<'a, 'i, D, I, T> where
    D: Unpin,
    T: Unpin,
    <I as Interp<'a, D>>::State: Unpin

impl<'a, 'i, D, I, T> UnwindSafe for FixpointExecutor<'a, 'i, D, I, T> where
    D: RefUnwindSafe + UnwindSafe,
    I: RefUnwindSafe,
    T: UnwindSafe,
    <I as Interp<'a, D>>::State: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.