1.0.0[−][src]Struct core::ops::Range
A (half-open) range bounded inclusively below and exclusively above
(start..end).
The range start..end contains all values with start <= x < end.
It is empty if start >= end.
Examples
The start..end syntax is a Range:
assert_eq!((3..5), std::ops::Range { start: 3, end: 5 }); assert_eq!(3 + 4 + 5, (3..6).sum());Run
let arr = [0, 1, 2, 3, 4]; assert_eq!(arr[ .. ], [0, 1, 2, 3, 4]); assert_eq!(arr[ .. 3], [0, 1, 2 ]); assert_eq!(arr[ ..=3], [0, 1, 2, 3 ]); assert_eq!(arr[1.. ], [ 1, 2, 3, 4]); assert_eq!(arr[1.. 3], [ 1, 2 ]); // This is a `Range` assert_eq!(arr[1..=3], [ 1, 2, 3 ]);Run
Fields
start: IdxThe lower bound of the range (inclusive).
end: IdxThe upper bound of the range (exclusive).
Implementations
impl<Idx: PartialOrd<Idx>> Range<Idx>[src]
pub fn contains<U: ?Sized>(&self, item: &U) -> bool where
Idx: PartialOrd<U>,
U: PartialOrd<Idx>, 1.35.0[src]
Idx: PartialOrd<U>,
U: PartialOrd<Idx>,
Returns true if item is contained in the range.
Examples
assert!(!(3..5).contains(&2)); assert!( (3..5).contains(&3)); assert!( (3..5).contains(&4)); assert!(!(3..5).contains(&5)); assert!(!(3..3).contains(&3)); assert!(!(3..2).contains(&3)); assert!( (0.0..1.0).contains(&0.5)); assert!(!(0.0..1.0).contains(&f32::NAN)); assert!(!(0.0..f32::NAN).contains(&0.5)); assert!(!(f32::NAN..1.0).contains(&0.5));Run
pub fn is_empty(&self) -> bool1.47.0[src]
Returns true if the range contains no items.
Examples
assert!(!(3..5).is_empty()); assert!( (3..3).is_empty()); assert!( (3..2).is_empty());Run
The range is empty if either side is incomparable:
assert!(!(3.0..5.0).is_empty()); assert!( (3.0..f32::NAN).is_empty()); assert!( (f32::NAN..5.0).is_empty());Run
Trait Implementations
impl<Idx: Clone> Clone for Range<Idx>[src]
pub fn clone(&self) -> Range<Idx>ⓘ[src]
pub fn clone_from(&mut self, source: &Self)[src]
impl<Idx: Debug> Debug for Range<Idx>[src]
impl<Idx: Default> Default for Range<Idx>[src]
impl<A: Step> DoubleEndedIterator for Range<A>[src]
pub fn next_back(&mut self) -> Option<A>[src]
pub fn nth_back(&mut self, n: usize) -> Option<A>[src]
pub fn advance_back_by(&mut self, n: usize) -> Result<(), usize>[src]
pub fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>, 1.27.0[src]
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
pub fn rfold<B, F>(self, init: B, f: F) -> B where
Self: Sized,
F: FnMut(B, Self::Item) -> B, 1.27.0[src]
Self: Sized,
F: FnMut(B, Self::Item) -> B,
pub fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item> where
Self: Sized,
P: FnMut(&Self::Item) -> bool, 1.27.0[src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
impl<Idx: Eq> Eq for Range<Idx>[src]
impl ExactSizeIterator for Range<usize>[src]
impl ExactSizeIterator for Range<u8>[src]
impl ExactSizeIterator for Range<u16>[src]
impl ExactSizeIterator for Range<isize>[src]
impl ExactSizeIterator for Range<i8>[src]
impl ExactSizeIterator for Range<i16>[src]
impl ExactSizeIterator for Range<u32>[src]
impl ExactSizeIterator for Range<i32>[src]
impl<A: Step> FusedIterator for Range<A>1.26.0[src]
impl<Idx: Hash> Hash for Range<Idx>[src]
pub fn hash<__H: Hasher>(&self, state: &mut __H)[src]
pub fn hash_slice<H: Hasher>(data: &[Self], state: &mut H) where
Self: Sized, 1.3.0[src]
Self: Sized,
impl<A: Step> Iterator for Range<A>[src]
type Item = A
The type of the elements being iterated over.
pub fn next(&mut self) -> Option<A>[src]
pub fn size_hint(&self) -> (usize, Option<usize>)[src]
pub fn nth(&mut self, n: usize) -> Option<A>[src]
pub fn last(self) -> Option<A>[src]
pub fn min(self) -> Option<A>[src]
pub fn max(self) -> Option<A>[src]
pub fn count(self) -> usize where
Self: Sized, [src]
Self: Sized,
pub fn advance_by(&mut self, n: usize) -> Result<(), usize>[src]
pub fn step_by(self, step: usize) -> StepBy<Self>ⓘ where
Self: Sized, 1.28.0[src]
Self: Sized,
pub fn chain<U>(self, other: U) -> Chain<Self, U::IntoIter>ⓘ where
Self: Sized,
U: IntoIterator<Item = Self::Item>, [src]
Self: Sized,
U: IntoIterator<Item = Self::Item>,
pub fn zip<U>(self, other: U) -> Zip<Self, U::IntoIter>ⓘ where
Self: Sized,
U: IntoIterator, [src]
Self: Sized,
U: IntoIterator,
pub 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, [src]
Notable traits for Intersperse<I>
impl<I> Iterator for Intersperse<I> where
I: Iterator,
I::Item: Clone, type Item = I::Item;Self: Sized,
Self::Item: Clone,
pub fn map<B, F>(self, f: F) -> Map<Self, F>ⓘ where
Self: Sized,
F: FnMut(Self::Item) -> B, [src]
Self: Sized,
F: FnMut(Self::Item) -> B,
pub fn for_each<F>(self, f: F) where
Self: Sized,
F: FnMut(Self::Item), 1.21.0[src]
Self: Sized,
F: FnMut(Self::Item),
pub fn filter<P>(self, predicate: P) -> Filter<Self, P>ⓘ where
Self: Sized,
P: FnMut(&Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
pub fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>ⓘ where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>, [src]
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
pub fn enumerate(self) -> Enumerate<Self>ⓘ where
Self: Sized, [src]
Self: Sized,
pub fn peekable(self) -> Peekable<Self>ⓘ where
Self: Sized, [src]
Self: Sized,
pub fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>ⓘ where
Self: Sized,
P: FnMut(&Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
pub fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>ⓘ where
Self: Sized,
P: FnMut(&Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
pub fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>ⓘ where
Self: Sized,
P: FnMut(Self::Item) -> Option<B>, [src]
Self: Sized,
P: FnMut(Self::Item) -> Option<B>,
pub fn skip(self, n: usize) -> Skip<Self>ⓘ where
Self: Sized, [src]
Self: Sized,
pub fn take(self, n: usize) -> Take<Self>ⓘ where
Self: Sized, [src]
Self: Sized,
pub 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>, [src]
Self: Sized,
F: FnMut(&mut St, Self::Item) -> Option<B>,
pub fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>ⓘ where
Self: Sized,
U: IntoIterator,
F: FnMut(Self::Item) -> U, [src]
Self: Sized,
U: IntoIterator,
F: FnMut(Self::Item) -> U,
pub fn flatten(self) -> Flatten<Self>ⓘ where
Self: Sized,
Self::Item: IntoIterator, 1.29.0[src]
Self: Sized,
Self::Item: IntoIterator,
pub fn fuse(self) -> Fuse<Self>ⓘ where
Self: Sized, [src]
Self: Sized,
pub fn inspect<F>(self, f: F) -> Inspect<Self, F>ⓘ where
Self: Sized,
F: FnMut(&Self::Item), [src]
Self: Sized,
F: FnMut(&Self::Item),
pub fn by_ref(&mut self) -> &mut Self where
Self: Sized, [src]
Self: Sized,
#[must_use =
"if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]pub fn collect<B: FromIterator<Self::Item>>(self) -> B where
Self: Sized, [src]
Self: Sized,
pub fn partition<B, F>(self, f: F) -> (B, B) where
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool, [src]
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
pub fn partition_in_place<'a, T: 'a, P>(self, predicate: P) -> usize where
Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool, [src]
Self: Sized + DoubleEndedIterator<Item = &'a mut T>,
P: FnMut(&T) -> bool,
pub fn is_partitioned<P>(self, predicate: P) -> bool where
Self: Sized,
P: FnMut(Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(Self::Item) -> bool,
pub fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>, 1.27.0[src]
Self: Sized,
F: FnMut(B, Self::Item) -> R,
R: Try<Ok = B>,
pub fn try_for_each<F, R>(&mut self, f: F) -> R where
Self: Sized,
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>, 1.27.0[src]
Self: Sized,
F: FnMut(Self::Item) -> R,
R: Try<Ok = ()>,
pub fn fold<B, F>(self, init: B, f: F) -> B where
Self: Sized,
F: FnMut(B, Self::Item) -> B, [src]
Self: Sized,
F: FnMut(B, Self::Item) -> B,
pub fn fold_first<F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> Self::Item, [src]
Self: Sized,
F: FnMut(Self::Item, Self::Item) -> Self::Item,
pub fn all<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool, [src]
Self: Sized,
F: FnMut(Self::Item) -> bool,
pub fn any<F>(&mut self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> bool, [src]
Self: Sized,
F: FnMut(Self::Item) -> bool,
pub fn find<P>(&mut self, predicate: P) -> Option<Self::Item> where
Self: Sized,
P: FnMut(&Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(&Self::Item) -> bool,
pub fn find_map<B, F>(&mut self, f: F) -> Option<B> where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>, 1.30.0[src]
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
pub fn try_find<F, R>(&mut self, f: F) -> Result<Option<Self::Item>, R::Error> where
Self: Sized,
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>, [src]
Self: Sized,
F: FnMut(&Self::Item) -> R,
R: Try<Ok = bool>,
pub fn position<P>(&mut self, predicate: P) -> Option<usize> where
Self: Sized,
P: FnMut(Self::Item) -> bool, [src]
Self: Sized,
P: FnMut(Self::Item) -> bool,
pub fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
P: FnMut(Self::Item) -> bool,
Self: Sized + ExactSizeIterator + DoubleEndedIterator, [src]
P: FnMut(Self::Item) -> bool,
Self: Sized + ExactSizeIterator + DoubleEndedIterator,
pub fn max_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B, 1.6.0[src]
Self: Sized,
F: FnMut(&Self::Item) -> B,
pub fn max_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering, 1.15.0[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn min_by_key<B: Ord, F>(self, f: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item) -> B, 1.6.0[src]
Self: Sized,
F: FnMut(&Self::Item) -> B,
pub fn min_by<F>(self, compare: F) -> Option<Self::Item> where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering, 1.15.0[src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Ordering,
pub fn rev(self) -> Rev<Self>ⓘ where
Self: Sized + DoubleEndedIterator, [src]
Self: Sized + DoubleEndedIterator,
pub fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB) where
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item = (A, B)>, [src]
FromA: Default + Extend<A>,
FromB: Default + Extend<B>,
Self: Sized + Iterator<Item = (A, B)>,
pub fn copied<'a, T: 'a>(self) -> Copied<Self>ⓘ where
Self: Sized + Iterator<Item = &'a T>,
T: Copy, 1.36.0[src]
Self: Sized + Iterator<Item = &'a T>,
T: Copy,
pub fn cloned<'a, T: 'a>(self) -> Cloned<Self>ⓘ where
Self: Sized + Iterator<Item = &'a T>,
T: Clone, [src]
Self: Sized + Iterator<Item = &'a T>,
T: Clone,
pub fn cycle(self) -> Cycle<Self>ⓘ where
Self: Sized + Clone, [src]
Self: Sized + Clone,
pub fn sum<S>(self) -> S where
Self: Sized,
S: Sum<Self::Item>, 1.11.0[src]
Self: Sized,
S: Sum<Self::Item>,
pub fn product<P>(self) -> P where
Self: Sized,
P: Product<Self::Item>, 1.11.0[src]
Self: Sized,
P: Product<Self::Item>,
pub fn cmp<I>(self, other: I) -> Ordering where
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Self: Sized, 1.5.0[src]
I: IntoIterator<Item = Self::Item>,
Self::Item: Ord,
Self: Sized,
pub fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Ordering, [src]
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Ordering,
pub fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
pub 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>, [src]
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> Option<Ordering>,
pub fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
pub fn eq_by<I, F>(self, other: I, eq: F) -> bool where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> bool, [src]
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, I::Item) -> bool,
pub fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialEq<I::Item>,
Self: Sized,
pub fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
pub fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
pub fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
pub fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized, 1.5.0[src]
I: IntoIterator,
Self::Item: PartialOrd<I::Item>,
Self: Sized,
pub fn is_sorted(self) -> bool where
Self: Sized,
Self::Item: PartialOrd, [src]
Self: Sized,
Self::Item: PartialOrd,
pub fn is_sorted_by<F>(self, compare: F) -> bool where
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>, [src]
Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
pub fn is_sorted_by_key<F, K>(self, f: F) -> bool where
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd, [src]
Self: Sized,
F: FnMut(Self::Item) -> K,
K: PartialOrd,
impl<Idx: PartialEq> PartialEq<Range<Idx>> for Range<Idx>[src]
impl<T> RangeBounds<T> for Range<T>1.28.0[src]
pub fn start_bound(&self) -> Bound<&T>[src]
pub fn end_bound(&self) -> Bound<&T>[src]
pub fn assert_len(self, len: usize) -> Range<usize>ⓘ where
Self: RangeBounds<usize>, [src]
Self: RangeBounds<usize>,
pub fn contains<U: ?Sized>(&self, item: &U) -> bool where
T: PartialOrd<U>,
U: PartialOrd<T>, 1.35.0[src]
T: PartialOrd<U>,
U: PartialOrd<T>,
impl<T> RangeBounds<T> for Range<&T>1.28.0[src]
pub fn start_bound(&self) -> Bound<&T>[src]
pub fn end_bound(&self) -> Bound<&T>[src]
pub fn assert_len(self, len: usize) -> Range<usize>ⓘ where
Self: RangeBounds<usize>, [src]
Self: RangeBounds<usize>,
pub fn contains<U: ?Sized>(&self, item: &U) -> bool where
T: PartialOrd<U>,
U: PartialOrd<T>, 1.35.0[src]
T: PartialOrd<U>,
U: PartialOrd<T>,
impl<T> SliceIndex<[T]> for Range<usize>1.15.0[src]
type Output = [T]
The output type returned by methods.
pub fn get(self, slice: &[T]) -> Option<&[T]>[src]
pub fn get_mut(self, slice: &mut [T]) -> Option<&mut [T]>[src]
pub unsafe fn get_unchecked(self, slice: *const [T]) -> *const [T][src]
pub unsafe fn get_unchecked_mut(self, slice: *mut [T]) -> *mut [T][src]
pub fn index(self, slice: &[T]) -> &[T][src]
pub fn index_mut(self, slice: &mut [T]) -> &mut [T][src]
impl SliceIndex<str> for Range<usize>1.20.0[src]
Implements substring slicing with syntax &self[begin .. end] or &mut self[begin .. end].
Returns a slice of the given string from the byte range
[begin, end).
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by
direct implementation of Index and IndexMut.
Panics
Panics if begin or end does not point to the starting byte offset of
a character (as defined by is_char_boundary), if begin > end, or if
end > len.
Examples
let s = "Löwe 老虎 Léopard"; assert_eq!(&s[0 .. 1], "L"); assert_eq!(&s[1 .. 9], "öwe 老"); // these will panic: // byte 2 lies within `ö`: // &s[2 ..3]; // byte 8 lies within `老` // &s[1 .. 8]; // byte 100 is outside the string // &s[3 .. 100];Run
type Output = str
The output type returned by methods.
pub fn get(self, slice: &str) -> Option<&Self::Output>[src]
pub fn get_mut(self, slice: &mut str) -> Option<&mut Self::Output>[src]
pub unsafe fn get_unchecked(self, slice: *const str) -> *const Self::Output[src]
pub unsafe fn get_unchecked_mut(self, slice: *mut str) -> *mut Self::Output[src]
pub fn index(self, slice: &str) -> &Self::Output[src]
pub fn index_mut(self, slice: &mut str) -> &mut Self::Output[src]
impl<Idx> StructuralEq for Range<Idx>[src]
impl<Idx> StructuralPartialEq for Range<Idx>[src]
impl<A: Step> TrustedLen for Range<A>[src]
Auto Trait Implementations
impl<Idx> Send for Range<Idx> where
Idx: Send, [src]
Idx: Send,
impl<Idx> Sync for Range<Idx> where
Idx: Sync, [src]
Idx: Sync,
impl<Idx> Unpin for Range<Idx> where
Idx: Unpin, [src]
Idx: Unpin,
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<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(U) -> Result<T, <T as TryFrom<U>>::Error>[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>, [src]
U: TryFrom<T>,