Struct haybale::ExecutionManager [−][src]
An ExecutionManager
allows you to symbolically explore executions of a
function. Conceptually, it is an Iterator
over possible paths through the
function. Calling next()
on an ExecutionManager
explores another possible
path, returning either an Ok
with a ReturnValue
representing the function's symbolic return value at the end of that path, or
an Err
if an error was encountered while processing the path.
Importantly, after any call to next()
(whether it results in an Ok
or an
Err
), you can access the State
resulting from the end of that path using
the state()
or mut_state()
methods.
To get detailed information about an Err
returned from a path, you can use
state().full_error_message_with_context()
.
When next()
returns None
, there are no more possible paths through the
function.
Implementations
impl<'p, B: Backend> ExecutionManager<'p, B>
[src]
pub fn func(&self) -> &'p Function
[src]
Reference to the Function
which the ExecutionManager
is managing
symbolic execution of. (This is the top-level function, i.e., the
function we started the analysis in.)
pub fn state(&self) -> &State<'p, B>
[src]
Provides access to the State
resulting from the end of the most recently
explored path (or, if next()
has never been called on this ExecutionManager
,
then simply the initial State
which was passed in).
pub fn mut_state(&mut self) -> &mut State<'p, B>
[src]
Provides mutable access to the underlying State
(see notes on state()
).
Changes made to the initial state (before the first call to next()
) are
"sticky", and will persist through all executions of the function.
However, changes made to a final state (after a call to next()
) will be
completely wiped away the next time that next()
is called.
pub fn param_bvs(&self) -> &Vec<B::BV>
[src]
Provides access to the BV
objects representing each of the function's parameters
Trait Implementations
impl<'p, B: Backend> Iterator for ExecutionManager<'p, B> where
B: 'p,
[src]
B: 'p,
type Item = Result<ReturnValue<B::BV>>
The type of the elements being iterated over.
fn next(&mut self) -> Option<Self::Item>
[src]
pub fn size_hint(&self) -> (usize, Option<usize>)
1.0.0[src]
pub fn count(self) -> usize
1.0.0[src]
pub fn last(self) -> Option<Self::Item>
1.0.0[src]
pub fn advance_by(&mut self, n: usize) -> Result<(), usize>
[src]
pub fn nth(&mut self, n: usize) -> Option<Self::Item>
1.0.0[src]
pub fn step_by(self, step: usize) -> StepBy<Self>
1.28.0[src]
pub fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> where
U: IntoIterator<Item = Self::Item>,
1.0.0[src]
U: IntoIterator<Item = Self::Item>,
pub fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> where
U: IntoIterator,
1.0.0[src]
U: IntoIterator,
pub fn intersperse(self, separator: Self::Item) -> Intersperse<Self> where
Self::Item: Clone,
[src]
Self::Item: Clone,
pub fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G> where
G: FnMut() -> Self::Item,
[src]
G: FnMut() -> Self::Item,
pub fn map<B, F>(self, f: F) -> Map<Self, F> where
F: FnMut(Self::Item) -> B,
1.0.0[src]
F: FnMut(Self::Item) -> B,
pub fn for_each<F>(self, f: F) where
F: FnMut(Self::Item),
1.21.0[src]
F: FnMut(Self::Item),
pub fn filter<P>(self, predicate: P) -> Filter<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0[src]
P: FnMut(&Self::Item) -> bool,
pub fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where
F: FnMut(Self::Item) -> Option<B>,
1.0.0[src]
F: FnMut(Self::Item) -> Option<B>,
pub fn enumerate(self) -> Enumerate<Self>
1.0.0[src]
pub fn peekable(self) -> Peekable<Self>
1.0.0[src]
pub fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0[src]
P: FnMut(&Self::Item) -> bool,
pub fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where
P: FnMut(&Self::Item) -> bool,
1.0.0[src]
P: FnMut(&Self::Item) -> bool,
pub fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> where
P: FnMut(Self::Item) -> Option<B>,
[src]
P: FnMut(Self::Item) -> Option<B>,
pub fn skip(self, n: usize) -> Skip<Self>
1.0.0[src]
pub fn take(self, n: usize) -> Take<Self>
1.0.0[src]
pub fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where
F: FnMut(&mut St, Self::Item) -> Option<B>,
1.0.0[src]
F: FnMut(&mut St, Self::Item) -> Option<B>,
pub fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where
F: FnMut(Self::Item) -> U,
U: IntoIterator,
1.0.0[src]
F: FnMut(Self::Item) -> U,
U: IntoIterator,
pub fn flatten(self) -> Flatten<Self> where
Self::Item: IntoIterator,
1.29.0[src]
Self::Item: IntoIterator,
pub fn fuse(self) -> Fuse<Self>
1.0.0[src]
pub fn inspect<F>(self, f: F) -> Inspect<Self, F> where
F: FnMut(&Self::Item),
1.0.0[src]
F: FnMut(&Self::Item),
pub fn by_ref(&mut self) -> &mut Self
1.0.0[src]
#[must_use =
"if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]pub fn collect<B>(self) -> B where
B: FromIterator<Self::Item>,
1.0.0[src]
B: FromIterator<Self::Item>,
pub fn partition<B, F>(self, f: F) -> (B, B) where
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
1.0.0[src]
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
pub fn partition_in_place<'a, T, P>(self, predicate: P) -> usize where
Self: DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,
T: 'a,
[src]
Self: DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,
T: 'a,
pub fn is_partitioned<P>(self, predicate: P) -> bool where
P: FnMut(Self::Item) -> bool,
[src]
P: FnMut(Self::Item) -> bool,
pub fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
1.27.0[src]
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
pub fn try_for_each<F, R>(&mut self, f: F) -> R where
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>,
1.27.0[src]
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>,
pub fn fold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, Self::Item) -> B,
1.0.0[src]
F: FnMut(B, Self::Item) -> B,
pub fn reduce<F>(self, f: F) -> Option<Self::Item> where
F: FnMut(Self::Item, Self::Item) -> Self::Item,
1.51.0[src]
F: FnMut(Self::Item, Self::Item) -> Self::Item,
pub fn all<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
1.0.0[src]
F: FnMut(Self::Item) -> bool,
pub fn any<F>(&mut self, f: F) -> bool where
F: FnMut(Self::Item) -> bool,
1.0.0[src]
F: FnMut(Self::Item) -> bool,
pub fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
P: FnMut(&Self::Item) -> bool,
1.0.0[src]
P: FnMut(&Self::Item) -> bool,
pub fn find_map<B, F>(&mut self, f: F) -> Option<B> where
F: FnMut(Self::Item) -> Option<B>,
1.30.0[src]
F: FnMut(Self::Item) -> Option<B>,
pub fn try_find<F, R>(
&mut self,
f: F
) -> Result<Option<Self::Item>, <R as Try>::Error> where
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>,
[src]
&mut self,
f: F
) -> Result<Option<Self::Item>, <R as Try>::Error> where
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>,
pub fn position<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
1.0.0[src]
P: FnMut(Self::Item) -> bool,
pub fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
1.0.0[src]
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
pub fn max(self) -> Option<Self::Item> where
Self::Item: Ord,
1.0.0[src]
Self::Item: Ord,
pub fn min(self) -> Option<Self::Item> where
Self::Item: Ord,
1.0.0[src]
Self::Item: Ord,
pub fn max_by_key<B, F>(self, f: F) -> Option<Self::Item> where
B: Ord,
F: FnMut(&Self::Item) -> B,
1.6.0[src]
B: Ord,
F: FnMut(&Self::Item) -> B,
pub fn max_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn min_by_key<B, F>(self, f: F) -> Option<Self::Item> where
B: Ord,
F: FnMut(&Self::Item) -> B,
1.6.0[src]
B: Ord,
F: FnMut(&Self::Item) -> B,
pub fn min_by<F>(self, compare: F) -> Option<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.15.0[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn rev(self) -> Rev<Self> where
Self: DoubleEndedIterator,
1.0.0[src]
Self: DoubleEndedIterator,
pub fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
Self: Iterator<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
1.0.0[src]
Self: Iterator<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
pub fn copied<'a, T>(self) -> Copied<Self> where
Self: Iterator<Item = &'a T>,
T: 'a + Copy,
1.36.0[src]
Self: Iterator<Item = &'a T>,
T: 'a + Copy,
pub fn cloned<'a, T>(self) -> Cloned<Self> where
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
1.0.0[src]
Self: Iterator<Item = &'a T>,
T: 'a + Clone,
pub fn cycle(self) -> Cycle<Self> where
Self: Clone,
1.0.0[src]
Self: Clone,
pub fn sum<S>(self) -> S where
S: Sum<Self::Item>,
1.11.0[src]
S: Sum<Self::Item>,
pub fn product<P>(self) -> P where
P: Product<Self::Item>,
1.11.0[src]
P: Product<Self::Item>,
pub fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
1.5.0[src]
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
pub fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
pub fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
pub fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
pub fn eq_by<I, F>(self, other: I, eq: F) -> bool where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
[src]
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
pub fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
pub fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
pub fn is_sorted(self) -> bool where
Self::Item: PartialOrd<Self::Item>,
[src]
Self::Item: PartialOrd<Self::Item>,
pub fn is_sorted_by<F>(self, compare: F) -> bool where
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
pub fn is_sorted_by_key<F, K>(self, f: F) -> bool where
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
[src]
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
Auto Trait Implementations
impl<'p, B> !RefUnwindSafe for ExecutionManager<'p, B>
[src]
impl<'p, B> !Send for ExecutionManager<'p, B>
[src]
impl<'p, B> !Sync for ExecutionManager<'p, B>
[src]
impl<'p, B> Unpin for ExecutionManager<'p, B> where
<B as Backend>::BV: Unpin,
<B as Backend>::Memory: Unpin,
<B as Backend>::SolverRef: Unpin,
[src]
<B as Backend>::BV: Unpin,
<B as Backend>::Memory: Unpin,
<B as Backend>::SolverRef: Unpin,
impl<'p, B> !UnwindSafe for ExecutionManager<'p, B>
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<I> IntoIterator for I where
I: Iterator,
[src]
I: Iterator,
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?
pub fn into_iter(self) -> I
[src]
impl<T> Itertools for T where
T: Iterator + ?Sized,
[src]
T: Iterator + ?Sized,
pub fn interleave<J>(
self,
other: J
) -> Interleave<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator<Item = Self::Item>,
[src]
self,
other: J
) -> Interleave<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator<Item = Self::Item>,
pub fn interleave_shortest<J>(
self,
other: J
) -> InterleaveShortest<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator<Item = Self::Item>,
[src]
self,
other: J
) -> InterleaveShortest<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator<Item = Self::Item>,
pub fn intersperse(
self,
element: Self::Item
) -> IntersperseWith<Self, IntersperseElementSimple<Self::Item>> where
Self::Item: Clone,
[src]
self,
element: Self::Item
) -> IntersperseWith<Self, IntersperseElementSimple<Self::Item>> where
Self::Item: Clone,
pub fn intersperse_with<F>(self, element: F) -> IntersperseWith<Self, F> where
F: FnMut() -> Self::Item,
[src]
F: FnMut() -> Self::Item,
pub fn zip_longest<J>(
self,
other: J
) -> ZipLongest<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator,
[src]
self,
other: J
) -> ZipLongest<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator,
pub fn zip_eq<J>(self, other: J) -> ZipEq<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator,
[src]
J: IntoIterator,
pub fn batching<B, F>(self, f: F) -> Batching<Self, F> where
F: FnMut(&mut Self) -> Option<B>,
[src]
F: FnMut(&mut Self) -> Option<B>,
pub fn group_by<K, F>(self, key: F) -> GroupBy<K, Self, F> where
F: FnMut(&Self::Item) -> K,
K: PartialEq<K>,
[src]
F: FnMut(&Self::Item) -> K,
K: PartialEq<K>,
pub fn chunks(self, size: usize) -> IntoChunks<Self>
[src]
pub fn tuple_windows<T>(self) -> TupleWindows<Self, T> where
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
<T as TupleCollect>::Item: Clone,
[src]
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
<T as TupleCollect>::Item: Clone,
pub fn circular_tuple_windows<T>(self) -> CircularTupleWindows<Self, T> where
Self: Clone + Iterator<Item = <T as TupleCollect>::Item> + ExactSizeIterator,
T: TupleCollect + Clone,
<T as TupleCollect>::Item: Clone,
[src]
Self: Clone + Iterator<Item = <T as TupleCollect>::Item> + ExactSizeIterator,
T: TupleCollect + Clone,
<T as TupleCollect>::Item: Clone,
pub fn tuples<T>(self) -> Tuples<Self, T> where
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
[src]
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
pub fn tee(self) -> (Tee<Self>, Tee<Self>) where
Self::Item: Clone,
[src]
Self::Item: Clone,
pub fn step(self, n: usize) -> Step<Self>
[src]
pub fn map_into<R>(self) -> MapSpecialCase<Self, MapSpecialCaseFnInto<R>> where
Self::Item: Into<R>,
[src]
Self::Item: Into<R>,
pub fn map_results<F, T, U, E>(
self,
f: F
) -> MapSpecialCase<Self, MapSpecialCaseFnOk<F>> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> U,
[src]
self,
f: F
) -> MapSpecialCase<Self, MapSpecialCaseFnOk<F>> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> U,
pub fn map_ok<F, T, U, E>(
self,
f: F
) -> MapSpecialCase<Self, MapSpecialCaseFnOk<F>> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> U,
[src]
self,
f: F
) -> MapSpecialCase<Self, MapSpecialCaseFnOk<F>> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> U,
pub fn filter_ok<F, T, E>(self, f: F) -> FilterOk<Self, F> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(&T) -> bool,
[src]
Self: Iterator<Item = Result<T, E>>,
F: FnMut(&T) -> bool,
pub fn filter_map_ok<F, T, U, E>(self, f: F) -> FilterMapOk<Self, F> where
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> Option<U>,
[src]
Self: Iterator<Item = Result<T, E>>,
F: FnMut(T) -> Option<U>,
pub fn merge<J>(
self,
other: J
) -> MergeBy<Self, <J as IntoIterator>::IntoIter, MergeLte> where
J: IntoIterator<Item = Self::Item>,
Self::Item: PartialOrd<Self::Item>,
[src]
self,
other: J
) -> MergeBy<Self, <J as IntoIterator>::IntoIter, MergeLte> where
J: IntoIterator<Item = Self::Item>,
Self::Item: PartialOrd<Self::Item>,
pub fn merge_by<J, F>(
self,
other: J,
is_first: F
) -> MergeBy<Self, <J as IntoIterator>::IntoIter, F> where
F: FnMut(&Self::Item, &Self::Item) -> bool,
J: IntoIterator<Item = Self::Item>,
[src]
self,
other: J,
is_first: F
) -> MergeBy<Self, <J as IntoIterator>::IntoIter, F> where
F: FnMut(&Self::Item, &Self::Item) -> bool,
J: IntoIterator<Item = Self::Item>,
pub fn merge_join_by<J, F>(
self,
other: J,
cmp_fn: F
) -> MergeJoinBy<Self, <J as IntoIterator>::IntoIter, F> where
F: FnMut(&Self::Item, &<J as IntoIterator>::Item) -> Ordering,
J: IntoIterator,
[src]
self,
other: J,
cmp_fn: F
) -> MergeJoinBy<Self, <J as IntoIterator>::IntoIter, F> where
F: FnMut(&Self::Item, &<J as IntoIterator>::Item) -> Ordering,
J: IntoIterator,
pub fn kmerge(
self
) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, KMergeByLt> where
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::Item: PartialOrd<<Self::Item as IntoIterator>::Item>,
[src]
self
) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, KMergeByLt> where
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::Item: PartialOrd<<Self::Item as IntoIterator>::Item>,
pub fn kmerge_by<F>(
self,
first: F
) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, F> where
F: FnMut(&<Self::Item as IntoIterator>::Item, &<Self::Item as IntoIterator>::Item) -> bool,
Self::Item: IntoIterator,
[src]
self,
first: F
) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, F> where
F: FnMut(&<Self::Item as IntoIterator>::Item, &<Self::Item as IntoIterator>::Item) -> bool,
Self::Item: IntoIterator,
pub fn cartesian_product<J>(
self,
other: J
) -> Product<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator,
Self::Item: Clone,
<J as IntoIterator>::IntoIter: Clone,
[src]
self,
other: J
) -> Product<Self, <J as IntoIterator>::IntoIter> where
J: IntoIterator,
Self::Item: Clone,
<J as IntoIterator>::IntoIter: Clone,
pub fn multi_cartesian_product(
self
) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter> where
Self: Iterator,
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::IntoIter: Clone,
<Self::Item as IntoIterator>::Item: Clone,
[src]
self
) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter> where
Self: Iterator,
Self::Item: IntoIterator,
<Self::Item as IntoIterator>::IntoIter: Clone,
<Self::Item as IntoIterator>::Item: Clone,
pub fn coalesce<F>(self, f: F) -> CoalesceBy<Self, F, Self::Item> where
F: FnMut(Self::Item, Self::Item) -> Result<Self::Item, (Self::Item, Self::Item)>,
[src]
F: FnMut(Self::Item, Self::Item) -> Result<Self::Item, (Self::Item, Self::Item)>,
pub fn dedup(
self
) -> CoalesceBy<Self, DedupPred2CoalescePred<DedupEq>, Self::Item> where
Self::Item: PartialEq<Self::Item>,
[src]
self
) -> CoalesceBy<Self, DedupPred2CoalescePred<DedupEq>, Self::Item> where
Self::Item: PartialEq<Self::Item>,
pub fn dedup_by<Cmp>(
self,
cmp: Cmp
) -> CoalesceBy<Self, DedupPred2CoalescePred<Cmp>, Self::Item> where
Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
[src]
self,
cmp: Cmp
) -> CoalesceBy<Self, DedupPred2CoalescePred<Cmp>, Self::Item> where
Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
pub fn dedup_with_count(
self
) -> CoalesceBy<Self, DedupPredWithCount2CoalescePred<DedupEq>, (usize, Self::Item)>
[src]
self
) -> CoalesceBy<Self, DedupPredWithCount2CoalescePred<DedupEq>, (usize, Self::Item)>
pub fn dedup_by_with_count<Cmp>(
self,
cmp: Cmp
) -> CoalesceBy<Self, DedupPredWithCount2CoalescePred<Cmp>, (usize, Self::Item)> where
Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
[src]
self,
cmp: Cmp
) -> CoalesceBy<Self, DedupPredWithCount2CoalescePred<Cmp>, (usize, Self::Item)> where
Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
pub fn unique(self) -> Unique<Self> where
Self::Item: Clone,
Self::Item: Eq,
Self::Item: Hash,
[src]
Self::Item: Clone,
Self::Item: Eq,
Self::Item: Hash,
pub fn unique_by<V, F>(self, f: F) -> UniqueBy<Self, V, F> where
V: Eq + Hash,
F: FnMut(&Self::Item) -> V,
[src]
V: Eq + Hash,
F: FnMut(&Self::Item) -> V,
pub fn peeking_take_while<F>(
&mut self,
accept: F
) -> PeekingTakeWhile<'_, Self, F> where
Self: PeekingNext,
F: FnMut(&Self::Item) -> bool,
[src]
&mut self,
accept: F
) -> PeekingTakeWhile<'_, Self, F> where
Self: PeekingNext,
F: FnMut(&Self::Item) -> bool,
pub fn take_while_ref<F>(&mut self, accept: F) -> TakeWhileRef<'_, Self, F> where
Self: Clone,
F: FnMut(&Self::Item) -> bool,
[src]
Self: Clone,
F: FnMut(&Self::Item) -> bool,
pub fn while_some<A>(self) -> WhileSome<Self> where
Self: Iterator<Item = Option<A>>,
[src]
Self: Iterator<Item = Option<A>>,
pub fn tuple_combinations<T>(self) -> TupleCombinations<Self, T> where
Self: Clone,
T: HasCombination<Self>,
Self::Item: Clone,
[src]
Self: Clone,
T: HasCombination<Self>,
Self::Item: Clone,
pub fn combinations(self, k: usize) -> Combinations<Self> where
Self::Item: Clone,
[src]
Self::Item: Clone,
pub fn combinations_with_replacement(
self,
k: usize
) -> CombinationsWithReplacement<Self> where
Self::Item: Clone,
[src]
self,
k: usize
) -> CombinationsWithReplacement<Self> where
Self::Item: Clone,
pub fn permutations(self, k: usize) -> Permutations<Self> where
Self::Item: Clone,
[src]
Self::Item: Clone,
pub fn powerset(self) -> Powerset<Self> where
Self::Item: Clone,
[src]
Self::Item: Clone,
pub fn pad_using<F>(self, min: usize, f: F) -> PadUsing<Self, F> where
F: FnMut(usize) -> Self::Item,
[src]
F: FnMut(usize) -> Self::Item,
pub fn with_position(self) -> WithPosition<Self>
[src]
pub fn positions<P>(self, predicate: P) -> Positions<Self, P> where
P: FnMut(Self::Item) -> bool,
[src]
P: FnMut(Self::Item) -> bool,
pub fn update<F>(self, updater: F) -> Update<Self, F> where
F: FnMut(&mut Self::Item),
[src]
F: FnMut(&mut Self::Item),
pub fn next_tuple<T>(&mut self) -> Option<T> where
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
[src]
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
pub fn collect_tuple<T>(self) -> Option<T> where
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
[src]
Self: Iterator<Item = <T as TupleCollect>::Item>,
T: HomogeneousTuple,
pub fn find_position<P>(&mut self, pred: P) -> Option<(usize, Self::Item)> where
P: FnMut(&Self::Item) -> bool,
[src]
P: FnMut(&Self::Item) -> bool,
pub fn all_equal(&mut self) -> bool where
Self::Item: PartialEq<Self::Item>,
[src]
Self::Item: PartialEq<Self::Item>,
pub fn dropping(self, n: usize) -> Self
[src]
pub fn dropping_back(self, n: usize) -> Self where
Self: DoubleEndedIterator,
[src]
Self: DoubleEndedIterator,
pub fn foreach<F>(self, f: F) where
F: FnMut(Self::Item),
[src]
F: FnMut(Self::Item),
pub fn concat(self) -> Self::Item where
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default,
[src]
Self::Item: Extend<<Self::Item as IntoIterator>::Item>,
Self::Item: IntoIterator,
Self::Item: Default,
pub fn collect_vec(self) -> Vec<Self::Item, Global>
[src]
pub fn try_collect<T, U, E>(self) -> Result<U, E> where
Self: Iterator<Item = Result<T, E>>,
Result<U, E>: FromIterator<Result<T, E>>,
[src]
Self: Iterator<Item = Result<T, E>>,
Result<U, E>: FromIterator<Result<T, E>>,
pub fn set_from<'a, A, J>(&mut self, from: J) -> usize where
Self: Iterator<Item = &'a mut A>,
A: 'a,
J: IntoIterator<Item = A>,
[src]
Self: Iterator<Item = &'a mut A>,
A: 'a,
J: IntoIterator<Item = A>,
pub fn join(&mut self, sep: &str) -> String where
Self::Item: Display,
[src]
Self::Item: Display,
pub fn format(self, sep: &str) -> Format<'_, Self>
[src]
pub fn format_with<F>(self, sep: &str, format: F) -> FormatWith<'_, Self, F> where
F: FnMut(Self::Item, &mut dyn FnMut(&dyn Display)) -> Result<(), Error>,
[src]
F: FnMut(Self::Item, &mut dyn FnMut(&dyn Display)) -> Result<(), Error>,
pub fn fold_results<A, E, B, F>(&mut self, start: B, f: F) -> Result<B, E> where
Self: Iterator<Item = Result<A, E>>,
F: FnMut(B, A) -> B,
[src]
Self: Iterator<Item = Result<A, E>>,
F: FnMut(B, A) -> B,
pub fn fold_ok<A, E, B, F>(&mut self, start: B, f: F) -> Result<B, E> where
Self: Iterator<Item = Result<A, E>>,
F: FnMut(B, A) -> B,
[src]
Self: Iterator<Item = Result<A, E>>,
F: FnMut(B, A) -> B,
pub fn fold_options<A, B, F>(&mut self, start: B, f: F) -> Option<B> where
Self: Iterator<Item = Option<A>>,
F: FnMut(B, A) -> B,
[src]
Self: Iterator<Item = Option<A>>,
F: FnMut(B, A) -> B,
pub fn fold1<F>(self, f: F) -> Option<Self::Item> where
F: FnMut(Self::Item, Self::Item) -> Self::Item,
[src]
F: FnMut(Self::Item, Self::Item) -> Self::Item,
pub fn tree_fold1<F>(self, f: F) -> Option<Self::Item> where
F: FnMut(Self::Item, Self::Item) -> Self::Item,
[src]
F: FnMut(Self::Item, Self::Item) -> Self::Item,
pub fn fold_while<B, F>(&mut self, init: B, f: F) -> FoldWhile<B> where
F: FnMut(B, Self::Item) -> FoldWhile<B>,
[src]
F: FnMut(B, Self::Item) -> FoldWhile<B>,
pub fn sum1<S>(self) -> Option<S> where
S: Sum<Self::Item>,
[src]
S: Sum<Self::Item>,
pub fn product1<P>(self) -> Option<P> where
P: Product<Self::Item>,
[src]
P: Product<Self::Item>,
pub fn sorted_unstable(self) -> IntoIter<Self::Item, Global> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn sorted_unstable_by<F>(self, cmp: F) -> IntoIter<Self::Item, Global> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn sorted_unstable_by_key<K, F>(self, f: F) -> IntoIter<Self::Item, Global> where
F: FnMut(&Self::Item) -> K,
K: Ord,
[src]
F: FnMut(&Self::Item) -> K,
K: Ord,
pub fn sorted(self) -> IntoIter<Self::Item, Global> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn sorted_by<F>(self, cmp: F) -> IntoIter<Self::Item, Global> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn sorted_by_key<K, F>(self, f: F) -> IntoIter<Self::Item, Global> where
F: FnMut(&Self::Item) -> K,
K: Ord,
[src]
F: FnMut(&Self::Item) -> K,
K: Ord,
pub fn k_smallest(self, k: usize) -> IntoIter<Self::Item, Global> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn partition_map<A, B, F, L, R>(self, predicate: F) -> (A, B) where
B: Default + Extend<R>,
F: FnMut(Self::Item) -> Either<L, R>,
A: Default + Extend<L>,
[src]
B: Default + Extend<R>,
F: FnMut(Self::Item) -> Either<L, R>,
A: Default + Extend<L>,
pub fn into_group_map<K, V>(self) -> HashMap<K, Vec<V, Global>, RandomState> where
Self: Iterator<Item = (K, V)>,
K: Hash + Eq,
[src]
Self: Iterator<Item = (K, V)>,
K: Hash + Eq,
pub fn into_group_map_by<K, V, F>(
self,
f: F
) -> HashMap<K, Vec<V, Global>, RandomState> where
Self: Iterator<Item = V>,
F: Fn(&V) -> K,
K: Hash + Eq,
[src]
self,
f: F
) -> HashMap<K, Vec<V, Global>, RandomState> where
Self: Iterator<Item = V>,
F: Fn(&V) -> K,
K: Hash + Eq,
pub fn into_grouping_map<K, V>(self) -> GroupingMap<Self> where
Self: Iterator<Item = (K, V)>,
K: Hash + Eq,
[src]
Self: Iterator<Item = (K, V)>,
K: Hash + Eq,
pub fn into_grouping_map_by<K, V, F>(
self,
key_mapper: F
) -> GroupingMap<MapForGrouping<Self, F>> where
Self: Iterator<Item = V>,
F: FnMut(&V) -> K,
K: Hash + Eq,
[src]
self,
key_mapper: F
) -> GroupingMap<MapForGrouping<Self, F>> where
Self: Iterator<Item = V>,
F: FnMut(&V) -> K,
K: Hash + Eq,
pub fn minmax(self) -> MinMaxResult<Self::Item> where
Self::Item: PartialOrd<Self::Item>,
[src]
Self::Item: PartialOrd<Self::Item>,
pub fn minmax_by_key<K, F>(self, key: F) -> MinMaxResult<Self::Item> where
F: FnMut(&Self::Item) -> K,
K: PartialOrd<K>,
[src]
F: FnMut(&Self::Item) -> K,
K: PartialOrd<K>,
pub fn minmax_by<F>(self, compare: F) -> MinMaxResult<Self::Item> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn position_max(self) -> Option<usize> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn position_max_by_key<K, F>(self, key: F) -> Option<usize> where
F: FnMut(&Self::Item) -> K,
K: Ord,
[src]
F: FnMut(&Self::Item) -> K,
K: Ord,
pub fn position_max_by<F>(self, compare: F) -> Option<usize> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn position_min(self) -> Option<usize> where
Self::Item: Ord,
[src]
Self::Item: Ord,
pub fn position_min_by_key<K, F>(self, key: F) -> Option<usize> where
F: FnMut(&Self::Item) -> K,
K: Ord,
[src]
F: FnMut(&Self::Item) -> K,
K: Ord,
pub fn position_min_by<F>(self, compare: F) -> Option<usize> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn position_minmax(self) -> MinMaxResult<usize> where
Self::Item: PartialOrd<Self::Item>,
[src]
Self::Item: PartialOrd<Self::Item>,
pub fn position_minmax_by_key<K, F>(self, key: F) -> MinMaxResult<usize> where
F: FnMut(&Self::Item) -> K,
K: PartialOrd<K>,
[src]
F: FnMut(&Self::Item) -> K,
K: PartialOrd<K>,
pub fn position_minmax_by<F>(self, compare: F) -> MinMaxResult<usize> where
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
[src]
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn exactly_one(self) -> Result<Self::Item, ExactlyOneError<Self>>
[src]
pub fn multipeek(self) -> MultiPeek<Self>
[src]
pub fn counts(self) -> HashMap<Self::Item, usize, RandomState> where
Self::Item: Eq,
Self::Item: Hash,
[src]
Self::Item: Eq,
Self::Item: Hash,
impl<T, I> Reduce<T> for I where
I: Iterator<Item = T>,
[src]
I: Iterator<Item = T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,