Struct StreamWithState

Source
pub struct StreamWithState<'f, A = AlwaysMatch>
where A: Automaton,
{ fst: FstRef<'f>, aut: A, inp: Vec<u8>, empty_output: Option<Output>, stack: Vec<StreamState<'f, A::State>>, end_at: Bound, }
Expand description

A lexicographically ordered stream of key-value-state triples from an fst and an automaton.

The key-values are from the underyling FSTP while the states are from the automaton.

The A type parameter corresponds to an optional automaton to filter the stream. By default, no filtering is done.

The 'm lifetime parameter refers to the lifetime of the underlying map.

Fields§

§fst: FstRef<'f>§aut: A§inp: Vec<u8>§empty_output: Option<Output>§stack: Vec<StreamState<'f, A::State>>§end_at: Bound

Implementations§

Source§

impl<'f, A: Automaton> StreamWithState<'f, A>

Source

fn new( fst: FstRef<'f>, aut: A, min: Bound, max: Bound, ) -> StreamWithState<'f, A>

Source

fn seek_min(&mut self, min: Bound)

Seeks the underlying stream such that the next key to be read is the smallest key in the underlying fst that satisfies the given minimum bound.

This theoretically should be straight-forward, but we need to make sure our stack is correct, which includes accounting for automaton states.

Source

fn next_with<T>( &mut self, map: impl FnMut(&A::State) -> T, ) -> Option<(&[u8], Output, T)>

Trait Implementations§

Source§

impl<'a, 'f, A: 'a + Automaton> Streamer<'a> for StreamWithState<'f, A>
where A::State: Clone,

Source§

type Item = (&'a [u8], Output, <A as Automaton>::State)

The type of the item emitted by this stream.
Source§

fn next(&'a mut self) -> Option<(&'a [u8], Output, A::State)>

Emits the next element in this stream, or None to indicate the stream has been exhausted. Read more

Auto Trait Implementations§

§

impl<'f, A> Freeze for StreamWithState<'f, A>
where A: Freeze,

§

impl<'f, A> RefUnwindSafe for StreamWithState<'f, A>

§

impl<'f, A> Send for StreamWithState<'f, A>
where A: Send, <A as Automaton>::State: Send,

§

impl<'f, A> Sync for StreamWithState<'f, A>
where A: Sync, <A as Automaton>::State: Sync,

§

impl<'f, A> Unpin for StreamWithState<'f, A>
where A: Unpin, <A as Automaton>::State: Unpin,

§

impl<'f, A> UnwindSafe for StreamWithState<'f, A>
where A: UnwindSafe, <A as Automaton>::State: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<'a, S> IntoStreamer<'a> for S
where S: Streamer<'a>,

Source§

type Item = <S as Streamer<'a>>::Item

The type of the item emitted by the stream.
Source§

type Into = S

The type of the stream to be constructed.
Source§

fn into_stream(self) -> S

Construct a stream from Self.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.