当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust Iterator用法及代码示例


本文简要介绍rust语言中 Trait std::iter::Iterator 的用法。

用法

pub trait Iterator {
    type Item;
    fn next(&mut self) -> Option<Self::Item>;

    fn size_hint(&self) -> (usize, Option<usize>) { ... }
    fn count(self) -> usize { ... }
    fn last(self) -> Option<Self::Item> { ... }
    fn advance_by(&mut self, n: usize) -> Result<(), usize> { ... }
    fn nth(&mut self, n: usize) -> Option<Self::Item> { ... }
    fn step_by(self, step: usize) -> StepBy<Self>ⓘNotable traits for StepBy<I>impl<I> Iterator for StepBy<I> where    I: Iterator,     type Item = <I as Iterator>::Item; { ... }
    fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>ⓘNotable traits for Chain<A, B>impl<A, B> Iterator for Chain<A, B> where    A: Iterator,    B: Iterator<Item = <A as Iterator>::Item>,     type Item = <A as Iterator>::Item;    where        U: IntoIterator<Item = Self::Item>,
    { ... }
    fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>ⓘNotable traits for Zip<A, B>impl<A, B> Iterator for Zip<A, B> where    A: Iterator,    B: Iterator,     type Item = (<A as Iterator>::Item, <B as Iterator>::Item);    where        U: IntoIterator,
    { ... }
    fn intersperse(self, separator: Self::Item) -> Intersperse<Self>ⓘNotable traits for Intersperse<I>impl<I> Iterator for Intersperse<I> where    I: Iterator,    <I as Iterator>::Item: Clone,     type Item = <I as Iterator>::Item;    where        Self::Item: Clone,
    { ... }
    fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>ⓘNotable traits for IntersperseWith<I, G>impl<I, G> Iterator for IntersperseWith<I, G> where    I: Iterator,    G: FnMut() -> <I as Iterator>::Item,     type Item = <I as Iterator>::Item;    where        G: FnMut() -> Self::Item,
    { ... }
    fn map<B, F>(self, f: F) -> Map<Self, F>ⓘNotable traits for Map<I, F>impl<B, I, F> Iterator for Map<I, F> where    I: Iterator,    F: FnMut(<I as Iterator>::Item) -> B,     type Item = B;    where        F: FnMut(Self::Item) -> B,
    { ... }
    fn for_each<F>(self, f: F)    where        F: FnMut(Self::Item),
    { ... }
    fn filter<P>(self, predicate: P) -> Filter<Self, P>ⓘNotable traits for Filter<I, P>impl<I, P> Iterator for Filter<I, P> where    I: Iterator,    P: FnMut(&<I as Iterator>::Item) -> bool,     type Item = <I as Iterator>::Item;    where        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>ⓘNotable traits for FilterMap<I, F>impl<B, I, F> Iterator for FilterMap<I, F> where    I: Iterator,    F: FnMut(<I as Iterator>::Item) -> Option<B>,     type Item = B;    where        F: FnMut(Self::Item) -> Option<B>,
    { ... }
    fn enumerate(self) -> Enumerate<Self>ⓘNotable traits for Enumerate<I>impl<I> Iterator for Enumerate<I> where    I: Iterator,     type Item = (usize, <I as Iterator>::Item); { ... }
    fn peekable(self) -> Peekable<Self>ⓘNotable traits for Peekable<I>impl<I> Iterator for Peekable<I> where    I: Iterator,     type Item = <I as Iterator>::Item; { ... }
    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>ⓘNotable traits for SkipWhile<I, P>impl<I, P> Iterator for SkipWhile<I, P> where    I: Iterator,    P: FnMut(&<I as Iterator>::Item) -> bool,     type Item = <I as Iterator>::Item;    where        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>ⓘNotable traits for TakeWhile<I, P>impl<I, P> Iterator for TakeWhile<I, P> where    I: Iterator,    P: FnMut(&<I as Iterator>::Item) -> bool,     type Item = <I as Iterator>::Item;    where        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>ⓘNotable traits for MapWhile<I, P>impl<B, I, P> Iterator for MapWhile<I, P> where    I: Iterator,    P: FnMut(<I as Iterator>::Item) -> Option<B>,     type Item = B;    where        P: FnMut(Self::Item) -> Option<B>,
    { ... }
    fn skip(self, n: usize) -> Skip<Self>ⓘNotable traits for Skip<I>impl<I> Iterator for Skip<I> where    I: Iterator,     type Item = <I as Iterator>::Item; { ... }
    fn take(self, n: usize) -> Take<Self>ⓘNotable traits for Take<I>impl<I> Iterator for Take<I> where    I: Iterator,     type Item = <I as Iterator>::Item; { ... }
    fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>ⓘNotable traits for Scan<I, St, F>impl<B, I, St, F> Iterator for Scan<I, St, F> where    I: Iterator,    F: FnMut(&mut St, <I as Iterator>::Item) -> Option<B>,     type Item = B;    where        F: FnMut(&mut St, Self::Item) -> Option<B>,
    { ... }
    fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>ⓘNotable traits for FlatMap<I, U, F>impl<I, U, F> Iterator for FlatMap<I, U, F> where    I: Iterator,    U: IntoIterator,    F: FnMut(<I as Iterator>::Item) -> U,     type Item = <U as IntoIterator>::Item;    where        U: IntoIterator,        F: FnMut(Self::Item) -> U,
    { ... }
    fn flatten(self) -> Flatten<Self>ⓘNotable traits for Flatten<I>impl<I, U> Iterator for Flatten<I> where    I: Iterator,    U: Iterator,    <I as Iterator>::Item: IntoIterator,    <<I as Iterator>::Item as IntoIterator>::IntoIter == U,    <<I as Iterator>::Item as IntoIterator>::Item == <U as Iterator>::Item,     type Item = <U as Iterator>::Item;    where        Self::Item: IntoIterator,
    { ... }
    fn fuse(self) -> Fuse<Self>ⓘNotable traits for Fuse<I>impl<I> Iterator for Fuse<I> where    I: Iterator,     type Item = <I as Iterator>::Item; { ... }
    fn inspect<F>(self, f: F) -> Inspect<Self, F>ⓘNotable traits for Inspect<I, F>impl<I, F> Iterator for Inspect<I, F> where    I: Iterator,    F: FnMut(&<I as Iterator>::Item),     type Item = <I as Iterator>::Item;    where        F: FnMut(&Self::Item),
    { ... }
    fn by_ref(&mut self) -> &mut Self { ... }
    fn collect<B>(self) -> B    where        B: FromIterator<Self::Item>,
    { ... }
    fn partition<B, F>(self, f: F) -> (B, B)    where        B: Default + Extend<Self::Item>,        F: FnMut(&Self::Item) -> bool,
    { ... }
    fn partition_in_place<'a, T, P>(self, predicate: P) -> usize    where        T: 'a,        Self: DoubleEndedIterator<Item = &'a mut T>,        P: FnMut(&T) -> bool,
    { ... }
    fn is_partitioned<P>(self, predicate: P) -> bool    where        P: FnMut(Self::Item) -> bool,
    { ... }
    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R    where        F: FnMut(B, Self::Item) -> R,        R: Try<Output = B>,
    { ... }
    fn try_for_each<F, R>(&mut self, f: F) -> R    where        F: FnMut(Self::Item) -> R,        R: Try<Output = ()>,
    { ... }
    fn fold<B, F>(self, init: B, f: F) -> B    where        F: FnMut(B, Self::Item) -> B,
    { ... }
    fn reduce<F>(self, f: F) -> Option<Self::Item>    where        F: FnMut(Self::Item, Self::Item) -> Self::Item,
    { ... }
    fn all<F>(&mut self, f: F) -> bool    where        F: FnMut(Self::Item) -> bool,
    { ... }
    fn any<F>(&mut self, f: F) -> bool    where        F: FnMut(Self::Item) -> bool,
    { ... }
    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>    where        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn find_map<B, F>(&mut self, f: F) -> Option<B>    where        F: FnMut(Self::Item) -> Option<B>,
    { ... }
    fn try_find<F, R, E>(&mut self, f: F) -> Result<Option<Self::Item>, E>    where        F: FnMut(&Self::Item) -> R,        R: Try<Output = bool, Residual = Result<Infallible, E>> + Try,
    { ... }
    fn position<P>(&mut self, predicate: P) -> Option<usize>    where        P: FnMut(Self::Item) -> bool,
    { ... }
    fn rposition<P>(&mut self, predicate: P) -> Option<usize>    where        P: FnMut(Self::Item) -> bool,        Self: ExactSizeIterator + DoubleEndedIterator,
    { ... }
    fn max(self) -> Option<Self::Item>    where        Self::Item: Ord,
    { ... }
    fn min(self) -> Option<Self::Item>    where        Self::Item: Ord,
    { ... }
    fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>    where        B: Ord,        F: FnMut(&Self::Item) -> B,
    { ... }
    fn max_by<F>(self, compare: F) -> Option<Self::Item>    where        F: FnMut(&Self::Item, &Self::Item) -> Ordering,
    { ... }
    fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>    where        B: Ord,        F: FnMut(&Self::Item) -> B,
    { ... }
    fn min_by<F>(self, compare: F) -> Option<Self::Item>    where        F: FnMut(&Self::Item, &Self::Item) -> Ordering,
    { ... }
    fn rev(self) -> Rev<Self>ⓘNotable traits for Rev<I>impl<I> Iterator for Rev<I> where    I: DoubleEndedIterator,     type Item = <I as Iterator>::Item;    where        Self: DoubleEndedIterator,
    { ... }
    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)    where        FromA: Default + Extend<A>,        FromB: Default + Extend<B>,        Self: Iterator<Item = (A, B)>,
    { ... }
    fn copied<'a, T>(self) -> Copied<Self>ⓘNotable traits for Copied<I>impl<'a, I, T> Iterator for Copied<I> where    T: 'a + Copy,    I: Iterator<Item = &'a T>,     type Item = T;    where        T: 'a + Copy,        Self: Iterator<Item = &'a T>,
    { ... }
    fn cloned<'a, T>(self) -> Cloned<Self>ⓘNotable traits for Cloned<I>impl<'a, I, T> Iterator for Cloned<I> where    T: 'a + Clone,    I: Iterator<Item = &'a T>,     type Item = T;    where        T: 'a + Clone,        Self: Iterator<Item = &'a T>,
    { ... }
    fn cycle(self) -> Cycle<Self>ⓘNotable traits for Cycle<I>impl<I> Iterator for Cycle<I> where    I: Clone + Iterator,     type Item = <I as Iterator>::Item;    where        Self: Clone,
    { ... }
    fn sum<S>(self) -> S    where        S: Sum<Self::Item>,
    { ... }
    fn product<P>(self) -> P    where        P: Product<Self::Item>,
    { ... }
    fn cmp<I>(self, other: I) -> Ordering    where        I: IntoIterator<Item = Self::Item>,        Self::Item: Ord,
    { ... }
    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering    where        I: IntoIterator,        F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
    { ... }
    fn partial_cmp<I>(self, other: I) -> Option<Ordering>    where        I: IntoIterator,        Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    { ... }
    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>    where        I: IntoIterator,        F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
    { ... }
    fn eq<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialEq<<I as IntoIterator>::Item>,
    { ... }
    fn eq_by<I, F>(self, other: I, eq: F) -> bool    where        I: IntoIterator,        F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
    { ... }
    fn ne<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialEq<<I as IntoIterator>::Item>,
    { ... }
    fn lt<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    { ... }
    fn le<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    { ... }
    fn gt<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    { ... }
    fn ge<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    { ... }
    fn is_sorted(self) -> bool    where        Self::Item: PartialOrd<Self::Item>,
    { ... }
    fn is_sorted_by<F>(self, compare: F) -> bool    where        F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
    { ... }
    fn is_sorted_by_key<F, K>(self, f: F) -> bool    where        F: FnMut(Self::Item) -> K,        K: PartialOrd<K>,
    { ... }
}

处理迭代器的接口。

这是迭代器的主要特征。有关迭代器概念的更多信息,请参阅module-level 文档。特别是,您可能想知道如何实现Iterator.

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Trait std::iter::Iterator。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。