Struct core::ops::RangeFrom [] [src]

pub struct RangeFrom<Idx> {
    pub start: Idx,
}
1.0.0

A range which is only bounded below: { x | start <= x }. Use start.. for its shorthand.

See the contains() method for its characterization.

Note: Currently, no overflow checking is done for the iterator implementation; if you use an integer range and the integer overflows, it might panic in debug mode or create an endless loop in release mode. This overflow behavior might change in the future.

Examples

#![feature(iter_arith)] fn main() { assert_eq!((2..), std::ops::RangeFrom{ start: 2 }); assert_eq!(2+3+4, (2..).take(3).sum()); let arr = [0, 1, 2, 3]; assert_eq!(arr[ .. ], [0,1,2,3]); assert_eq!(arr[ ..3], [0,1,2 ]); assert_eq!(arr[1.. ], [ 1,2,3]); // RangeFrom assert_eq!(arr[1..3], [ 1,2 ]); }
#![feature(iter_arith)]
fn main() {
    assert_eq!((2..), std::ops::RangeFrom{ start: 2 });
    assert_eq!(2+3+4, (2..).take(3).sum());

    let arr = [0, 1, 2, 3];
    assert_eq!(arr[ .. ], [0,1,2,3]);
    assert_eq!(arr[ ..3], [0,1,2  ]);
    assert_eq!(arr[1.. ], [  1,2,3]);  // RangeFrom
    assert_eq!(arr[1..3], [  1,2  ]);
}

Fields

start

The lower bound of the range (inclusive).

Methods

impl<Idx: PartialOrd<Idx>> RangeFrom<Idx>

fn contains(&self, item: Idx) -> bool

Unstable (range_contains #32311)

: recently added as per RFC

Examples

#![feature(range_contains)] fn main() { assert!( ! (3..).contains(2)); assert!( (3..).contains(3)); assert!( (3..).contains(1_000_000_000)); }
#![feature(range_contains)]
fn main() {
    assert!( ! (3..).contains(2));
    assert!(   (3..).contains(3));
    assert!(   (3..).contains(1_000_000_000));
}

impl<A: Step> RangeFrom<A>

fn step_by(self, by: A) -> StepBy<A, Self>

Unstable (step_by #27741)

: recent addition

Creates an iterator starting at the same point, but stepping by the given amount at each iteration.

Examples

#![feature(step_by)] fn main() { for i in (0u8..).step_by(2).take(10) { println!("{}", i); } }

for i in (0u8..).step_by(2).take(10) {
    println!("{}", i);
}

This prints the first ten even natural integers (0 to 18).

Trait Implementations

impl<Idx: Debug> Debug for RangeFrom<Idx>

fn fmt(&self, fmt: &mut Formatter) -> Result

impl<A: Step + One> Iterator for RangeFrom<A> where &'a A: Add<&'a A, Output=A>

type Item = A

fn next(&mut self) -> Option<A>

fn size_hint(&self) -> (usize, Option<usize>)

fn count(self) -> usize where Self: Sized

fn last(self) -> Option<Self::Item> where Self: Sized

fn nth(&mut self, n: usize) -> Option<Self::Item> where Self: Sized

fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter> where Self: Sized, U: IntoIterator<Item=Self::Item>

fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter> where Self: Sized, U: IntoIterator

fn map<B, F>(self, f: F) -> Map<Self, F> where Self: Sized, F: FnMut(Self::Item) -> B

fn filter<P>(self, predicate: P) -> Filter<Self, P> where Self: Sized, P: FnMut(&Self::Item) -> bool

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> where Self: Sized, F: FnMut(Self::Item) -> Option<B>

fn enumerate(self) -> Enumerate<Self> where Self: Sized

fn peekable(self) -> Peekable<Self> where Self: Sized

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> where Self: Sized, P: FnMut(&Self::Item) -> bool

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> where Self: Sized, P: FnMut(&Self::Item) -> bool

fn skip(self, n: usize) -> Skip<Self> where Self: Sized

fn take(self, n: usize) -> Take<Self> where Self: Sized

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F> where Self: Sized, F: FnMut(&mut St, Self::Item) -> Option<B>

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> where Self: Sized, U: IntoIterator, F: FnMut(Self::Item) -> U

fn fuse(self) -> Fuse<Self> where Self: Sized

fn inspect<F>(self, f: F) -> Inspect<Self, F> 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 fold<B, F>(self, init: B, f: F) -> B where Self: Sized, F: FnMut(B, Self::Item) -> B

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 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) -> B1.6.0

fn min_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where Self: Sized, F: FnMut(&Self::Item) -> B1.6.0

fn rev(self) -> Rev<Self> 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 cloned<'a, T: 'a>(self) -> Cloned<Self> where Self: Sized + Iterator<Item=&'a T>, T: Clone

fn cycle(self) -> Cycle<Self> where Self: Sized + Clone

fn sum<S>(self) -> S where S: Add<Self::Item, Output=S> + Zero, Self: Sized

fn product<P>(self) -> P where P: Mul<Self::Item, Output=P> + One, Self: Sized

fn cmp<I>(self, other: I) -> Ordering where I: IntoIterator<Item=Self::Item>, Self::Item: Ord, Self: Sized1.5.0

fn partial_cmp<I>(self, other: I) -> Option<Ordering> where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized1.5.0

fn eq<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>, Self: Sized1.5.0

fn ne<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>, Self: Sized1.5.0

fn lt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized1.5.0

fn le<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized1.5.0

fn gt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized1.5.0

fn ge<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized1.5.0

Derived Implementations

impl<Idx: Eq> Eq for RangeFrom<Idx>

impl<Idx: PartialEq> PartialEq for RangeFrom<Idx>

fn eq(&self, __arg_0: &RangeFrom<Idx>) -> bool

fn ne(&self, __arg_0: &RangeFrom<Idx>) -> bool

impl<Idx: Clone> Clone for RangeFrom<Idx>

fn clone(&self) -> RangeFrom<Idx>

fn clone_from(&mut self, source: &Self)