pub struct RangeFrom<Idx> {
pub start: Idx,
}
1.0.0A 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.
#![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]);
assert_eq!(arr[1..3], [ 1,2 ]);
}
Fields
start | The lower bound of the range (inclusive).
|
Methods
fn contains(&self, item: Idx) -> bool
Unstable (range_contains
#32311): recently added as per RFC
#![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));
}
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.
#![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
type Item = A
fn next(&mut self) -> Option<A>
fn count(self) -> usize 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 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 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 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 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 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 eq<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>, Self: Sized
1.5.0
fn ne<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialEq<I::Item>, Self: Sized
1.5.0
fn lt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized
1.5.0
fn le<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized
1.5.0
fn gt<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized
1.5.0
fn ge<I>(self, other: I) -> bool where I: IntoIterator, Self::Item: PartialOrd<I::Item>, Self: Sized
1.5.0
Derived Implementations