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


Rust Iterator用法及代码示例


本文简要介绍rust语言中 Trait core::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    where        Self: Sized,
    { ... }
    fn last(self) -> Option<Self::Item>    where        Self: Sized,
    { ... }
    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::Item;    where        Self: Sized,
    { ... }
    fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter>ⓘNotable traits for Chain<A, B>impl<A, B> Iterator for Chain<A, B> where    A: Iterator,    B: Iterator<Item = A::Item>,     type Item = A::Item;    where        Self: Sized,        U: IntoIterator<Item = Self::Item>,
    { ... }
    fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter>ⓘNotable traits for Zip<A, B>impl<A, B> Iterator for Zip<A, B> where    A: Iterator,    B: Iterator,     type Item = (A::Item, B::Item);    where        Self: Sized,        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::Item: Clone,     type Item = I::Item;    where        Self: Sized,        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::Item,     type Item = I::Item;    where        Self: Sized,        G: FnMut() -> Self::Item,
    { ... }
    fn map<B, F>(self, f: F) -> Map<Self, F>ⓘNotable traits for Map<I, F>impl<B, I: Iterator, F> Iterator for Map<I, F> where    F: FnMut(I::Item) -> B,     type Item = B;    where        Self: Sized,        F: FnMut(Self::Item) -> B,
    { ... }
    fn for_each<F>(self, f: F)    where        Self: Sized,        F: FnMut(Self::Item),
    { ... }
    fn filter<P>(self, predicate: P) -> Filter<Self, P>ⓘNotable traits for Filter<I, P>impl<I: Iterator, P> Iterator for Filter<I, P> where    P: FnMut(&I::Item) -> bool,     type Item = I::Item;    where        Self: Sized,        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: Iterator, F> Iterator for FilterMap<I, F> where    F: FnMut(I::Item) -> Option<B>,     type Item = B;    where        Self: Sized,        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);    where        Self: Sized,
    { ... }
    fn peekable(self) -> Peekable<Self>ⓘNotable traits for Peekable<I>impl<I: Iterator> Iterator for Peekable<I>    type Item = I::Item;    where        Self: Sized,
    { ... }
    fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>ⓘNotable traits for SkipWhile<I, P>impl<I: Iterator, P> Iterator for SkipWhile<I, P> where    P: FnMut(&I::Item) -> bool,     type Item = I::Item;    where        Self: Sized,        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>ⓘNotable traits for TakeWhile<I, P>impl<I: Iterator, P> Iterator for TakeWhile<I, P> where    P: FnMut(&I::Item) -> bool,     type Item = I::Item;    where        Self: Sized,        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: Iterator, P> Iterator for MapWhile<I, P> where    P: FnMut(I::Item) -> Option<B>,     type Item = B;    where        Self: Sized,        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;    where        Self: Sized,
    { ... }
    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;    where        Self: Sized,
    { ... }
    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::Item) -> Option<B>,     type Item = B;    where        Self: Sized,        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: Iterator, U: IntoIterator, F> Iterator for FlatMap<I, U, F> where    F: FnMut(I::Item) -> U,     type Item = U::Item;    where        Self: Sized,        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<Item: IntoIterator<IntoIter = U, Item = U::Item>>,    U: Iterator,     type Item = U::Item;    where        Self: Sized,        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;    where        Self: Sized,
    { ... }
    fn inspect<F>(self, f: F) -> Inspect<Self, F>ⓘNotable traits for Inspect<I, F>impl<I: Iterator, F> Iterator for Inspect<I, F> where    F: FnMut(&I::Item),     type Item = I::Item;    where        Self: Sized,        F: FnMut(&Self::Item),
    { ... }
    fn by_ref(&mut self) -> &mut Self    where        Self: Sized,
    { ... }
    fn collect<B: FromIterator<Self::Item>>(self) -> B    where        Self: Sized,
    { ... }
    fn partition<B, F>(self, f: F) -> (B, B)    where        Self: Sized,        B: Default + Extend<Self::Item>,        F: FnMut(&Self::Item) -> bool,
    { ... }
    fn partition_in_place<'a, T: 'a, P>(self, predicate: P) -> usize    where        Self: Sized + DoubleEndedIterator<Item = &'a mut T>,        P: FnMut(&T) -> bool,
    { ... }
    fn is_partitioned<P>(self, predicate: P) -> bool    where        Self: Sized,        P: FnMut(Self::Item) -> bool,
    { ... }
    fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R    where        Self: Sized,        F: FnMut(B, Self::Item) -> R,        R: Try<Output = B>,
    { ... }
    fn try_for_each<F, R>(&mut self, f: F) -> R    where        Self: Sized,        F: FnMut(Self::Item) -> R,        R: Try<Output = ()>,
    { ... }
    fn fold<B, F>(self, init: B, f: F) -> B    where        Self: Sized,        F: FnMut(B, Self::Item) -> B,
    { ... }
    fn reduce<F>(self, f: F) -> Option<Self::Item>    where        Self: Sized,        F: FnMut(Self::Item, Self::Item) -> Self::Item,
    { ... }
    fn all<F>(&mut self, f: F) -> bool    where        Self: Sized,        F: FnMut(Self::Item) -> bool,
    { ... }
    fn any<F>(&mut self, f: F) -> bool    where        Self: Sized,        F: FnMut(Self::Item) -> bool,
    { ... }
    fn find<P>(&mut self, predicate: P) -> Option<Self::Item>    where        Self: Sized,        P: FnMut(&Self::Item) -> bool,
    { ... }
    fn find_map<B, F>(&mut self, f: F) -> Option<B>    where        Self: Sized,        F: FnMut(Self::Item) -> Option<B>,
    { ... }
    fn try_find<F, R, E>(&mut self, f: F) -> Result<Option<Self::Item>, E>    where        Self: Sized,        F: FnMut(&Self::Item) -> R,        R: Try<Output = bool>,        R: Try<Residual = Result<Infallible, E>>,
    { ... }
    fn position<P>(&mut self, predicate: P) -> Option<usize>    where        Self: Sized,        P: FnMut(Self::Item) -> bool,
    { ... }
    fn rposition<P>(&mut self, predicate: P) -> Option<usize>    where        P: FnMut(Self::Item) -> bool,        Self: Sized + ExactSizeIterator + DoubleEndedIterator,
    { ... }
    fn max(self) -> Option<Self::Item>    where        Self: Sized,        Self::Item: Ord,
    { ... }
    fn min(self) -> Option<Self::Item>    where        Self: Sized,        Self::Item: Ord,
    { ... }
    fn max_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item>    where        Self: Sized,        F: FnMut(&Self::Item) -> B,
    { ... }
    fn max_by<F>(self, compare: F) -> Option<Self::Item>    where        Self: Sized,        F: FnMut(&Self::Item, &Self::Item) -> Ordering,
    { ... }
    fn min_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item>    where        Self: Sized,        F: FnMut(&Self::Item) -> B,
    { ... }
    fn min_by<F>(self, compare: F) -> Option<Self::Item>    where        Self: Sized,        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: Sized + DoubleEndedIterator,
    { ... }
    fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)    where        FromA: Default + Extend<A>,        FromB: Default + Extend<B>,        Self: Sized + Iterator<Item = (A, B)>,
    { ... }
    fn copied<'a, T: 'a>(self) -> Copied<Self>ⓘNotable traits for Copied<I>impl<'a, I, T: 'a> Iterator for Copied<I> where    I: Iterator<Item = &'a T>,    T: Copy,     type Item = T;    where        Self: Sized + Iterator<Item = &'a T>,        T: Copy,
    { ... }
    fn cloned<'a, T: 'a>(self) -> Cloned<Self>ⓘNotable traits for Cloned<I>impl<'a, I, T: 'a> Iterator for Cloned<I> where    I: Iterator<Item = &'a T>,    T: Clone,     type Item = T;    where        Self: Sized + Iterator<Item = &'a T>,        T: Clone,
    { ... }
    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: Sized + Clone,
    { ... }
    fn sum<S>(self) -> S    where        Self: Sized,        S: Sum<Self::Item>,
    { ... }
    fn product<P>(self) -> P    where        Self: Sized,        P: Product<Self::Item>,
    { ... }
    fn cmp<I>(self, other: I) -> Ordering    where        I: IntoIterator<Item = Self::Item>,        Self::Item: Ord,        Self: Sized,
    { ... }
    fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering    where        Self: Sized,        I: IntoIterator,        F: FnMut(Self::Item, I::Item) -> Ordering,
    { ... }
    fn partial_cmp<I>(self, other: I) -> Option<Ordering>    where        I: IntoIterator,        Self::Item: PartialOrd<I::Item>,        Self: Sized,
    { ... }
    fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>    where        Self: Sized,        I: IntoIterator,        F: FnMut(Self::Item, I::Item) -> Option<Ordering>,
    { ... }
    fn eq<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialEq<I::Item>,        Self: Sized,
    { ... }
    fn eq_by<I, F>(self, other: I, eq: F) -> bool    where        Self: Sized,        I: IntoIterator,        F: FnMut(Self::Item, I::Item) -> bool,
    { ... }
    fn ne<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialEq<I::Item>,        Self: Sized,
    { ... }
    fn lt<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<I::Item>,        Self: Sized,
    { ... }
    fn le<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<I::Item>,        Self: Sized,
    { ... }
    fn gt<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<I::Item>,        Self: Sized,
    { ... }
    fn ge<I>(self, other: I) -> bool    where        I: IntoIterator,        Self::Item: PartialOrd<I::Item>,        Self: Sized,
    { ... }
    fn is_sorted(self) -> bool    where        Self: Sized,        Self::Item: PartialOrd,
    { ... }
    fn is_sorted_by<F>(self, compare: F) -> bool    where        Self: Sized,        F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
    { ... }
    fn is_sorted_by_key<F, K>(self, f: F) -> bool    where        Self: Sized,        F: FnMut(Self::Item) -> K,        K: PartialOrd,
    { ... }
}

处理迭代器的接口。

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

相关用法


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