pub struct RangeInclusive<Idx> { /* private fields */ }
Expand description
A range bounded inclusively below and above (start..=end
).
The RangeInclusive
start..=end
contains all values with x >= start
and x <= end
. It is empty unless start <= end
.
This iterator is fused, but the specific values of start
and end
after
iteration has finished are unspecified other than that .is_empty()
will return true
once no more values will be produced.
§Examples
The start..=end
syntax is a RangeInclusive
:
Implementations§
Source§impl<Idx> RangeInclusive<Idx>
impl<Idx> RangeInclusive<Idx>
1.27.0 (const: 1.32.0) · Sourcepub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx> ⓘ
pub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx> ⓘ
Creates a new inclusive range. Equivalent to writing start..=end
.
§Examples
1.27.0 (const: 1.32.0) · Sourcepub const fn start(&self) -> &Idx
pub const fn start(&self) -> &Idx
Returns the lower bound of the range (inclusive).
When using an inclusive range for iteration, the values of start()
and
end()
are unspecified after the iteration ended. To determine
whether the inclusive range is empty, use the is_empty()
method
instead of comparing start() > end()
.
Note: the value returned by this method is unspecified after the range has been iterated to exhaustion.
§Examples
1.27.0 (const: 1.32.0) · Sourcepub const fn end(&self) -> &Idx
pub const fn end(&self) -> &Idx
Returns the upper bound of the range (inclusive).
When using an inclusive range for iteration, the values of start()
and end()
are unspecified after the iteration ended. To determine
whether the inclusive range is empty, use the is_empty()
method
instead of comparing start() > end()
.
Note: the value returned by this method is unspecified after the range has been iterated to exhaustion.
§Examples
1.27.0 (const: unstable) · Sourcepub fn into_inner(self) -> (Idx, Idx)
pub fn into_inner(self) -> (Idx, Idx)
Destructures the RangeInclusive
into (lower bound, upper (inclusive) bound).
Note: the value returned by this method is unspecified after the range has been iterated to exhaustion.
§Examples
Source§impl<Idx> RangeInclusive<Idx>where
Idx: PartialOrd,
impl<Idx> RangeInclusive<Idx>where
Idx: PartialOrd,
1.35.0 · Sourcepub fn contains<U>(&self, item: &U) -> bool
pub fn contains<U>(&self, item: &U) -> bool
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..=5).contains(&6));
assert!( (3..=3).contains(&3));
assert!(!(3..=2).contains(&3));
assert!( (0.0..=1.0).contains(&1.0));
assert!(!(0.0..=1.0).contains(&f32::NAN));
assert!(!(0.0..=f32::NAN).contains(&0.0));
assert!(!(f32::NAN..=1.0).contains(&1.0));
This method always returns false
after iteration has finished:
1.47.0 · Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Returns true
if the range contains no items.
§Examples
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());
This method returns true
after iteration has finished:
Trait Implementations§
1.26.0 · Source§impl<Idx> Clone for RangeInclusive<Idx>where
Idx: Clone,
impl<Idx> Clone for RangeInclusive<Idx>where
Idx: Clone,
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read more1.26.0 · Source§impl<Idx> Debug for RangeInclusive<Idx>where
Idx: Debug,
impl<Idx> Debug for RangeInclusive<Idx>where
Idx: Debug,
1.26.0 · Source§impl<A> DoubleEndedIterator for RangeInclusive<A>where
A: Step,
impl<A> DoubleEndedIterator for RangeInclusive<A>where
A: Step,
Source§fn next_back(&mut self) -> Option<A>
fn next_back(&mut self) -> Option<A>
Source§fn nth_back(&mut self, n: usize) -> Option<A>
fn nth_back(&mut self, n: usize) -> Option<A>
n
th element from the end of the iterator. Read moreSource§fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
RangeInclusive<A>: Sized,
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
RangeInclusive<A>: Sized,
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
Iterator::try_fold()
: it takes
elements starting from the back of the iterator. Read moreSource§fn rfold<AAA, FFF>(self, init: AAA, fold: FFF) -> AAA
fn rfold<AAA, FFF>(self, init: AAA, fold: FFF) -> AAA
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<i16>
impl ExactSizeIterator for RangeInclusive<i16>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<i8>
impl ExactSizeIterator for RangeInclusive<i8>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<u16>
impl ExactSizeIterator for RangeInclusive<u16>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<u8>
impl ExactSizeIterator for RangeInclusive<u8>
Source§impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
Source§fn from(value: RangeInclusive<T>) -> RangeInclusive<T> ⓘ
fn from(value: RangeInclusive<T>) -> RangeInclusive<T> ⓘ
Source§impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
Source§fn from(value: RangeInclusive<T>) -> RangeInclusive<T>
fn from(value: RangeInclusive<T>) -> RangeInclusive<T>
Source§impl GetManyMutIndex for RangeInclusive<usize>
impl GetManyMutIndex for RangeInclusive<usize>
Source§fn is_in_bounds(&self, len: usize) -> bool
fn is_in_bounds(&self, len: usize) -> bool
get_many_mut_helpers
)true
if self
is in bounds for len
slice elements.Source§fn is_overlapping(&self, other: &RangeInclusive<usize>) -> bool
fn is_overlapping(&self, other: &RangeInclusive<usize>) -> bool
get_many_mut_helpers
)1.26.0 · Source§impl<Idx> Hash for RangeInclusive<Idx>where
Idx: Hash,
impl<Idx> Hash for RangeInclusive<Idx>where
Idx: Hash,
1.26.0 · Source§impl<A> Iterator for RangeInclusive<A>where
A: Step,
impl<A> Iterator for RangeInclusive<A>where
A: Step,
Source§fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
Source§fn count(self) -> usize
fn count(self) -> usize
Source§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
RangeInclusive<A>: Sized,
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
RangeInclusive<A>: Sized,
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
Source§fn fold<AAA, FFF>(self, init: AAA, fold: FFF) -> AAA
fn fold<AAA, FFF>(self, init: AAA, fold: FFF) -> AAA
Source§fn next_chunk<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
fn next_chunk<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
iter_next_chunk
#98326)N
values. Read moreSource§fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>
iter_advance_by
#77404)n
elements. Read more1.28.0 · Source§fn step_by(self, step: usize) -> StepBy<Self> ⓘwhere
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self> ⓘwhere
Self: Sized,
1.0.0 · Source§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> ⓘ
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter> ⓘ
1.0.0 · Source§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
U: IntoIterator,
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
U: IntoIterator,
Source§fn intersperse(self, separator: Self::Item) -> Intersperse<Self> ⓘ
fn intersperse(self, separator: Self::Item) -> Intersperse<Self> ⓘ
iter_intersperse
#79524)separator
between adjacent
items of the original iterator. Read moreSource§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G> ⓘ
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G> ⓘ
iter_intersperse
#79524)separator
between adjacent items of the original iterator. Read more1.0.0 · Source§fn map<B, F>(self, f: F) -> Map<Self, F> ⓘ
fn map<B, F>(self, f: F) -> Map<Self, F> ⓘ
1.0.0 · Source§fn filter<P>(self, predicate: P) -> Filter<Self, P> ⓘ
fn filter<P>(self, predicate: P) -> Filter<Self, P> ⓘ
1.0.0 · Source§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> ⓘ
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F> ⓘ
1.0.0 · Source§fn enumerate(self) -> Enumerate<Self> ⓘwhere
Self: Sized,
fn enumerate(self) -> Enumerate<Self> ⓘwhere
Self: Sized,
1.0.0 · Source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> ⓘ
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P> ⓘ
1.0.0 · Source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> ⓘ
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P> ⓘ
1.57.0 · Source§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> ⓘ
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P> ⓘ
1.0.0 · Source§fn skip(self, n: usize) -> Skip<Self> ⓘwhere
Self: Sized,
fn skip(self, n: usize) -> Skip<Self> ⓘwhere
Self: Sized,
n
elements. Read more1.0.0 · Source§fn take(self, n: usize) -> Take<Self> ⓘwhere
Self: Sized,
fn take(self, n: usize) -> Take<Self> ⓘwhere
Self: Sized,
n
elements, or fewer
if the underlying iterator ends sooner. Read more1.0.0 · Source§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> ⓘ
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F> ⓘ
1.29.0 · Source§fn flatten(self) -> Flatten<Self> ⓘ
fn flatten(self) -> Flatten<Self> ⓘ
Source§fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N> ⓘ
fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N> ⓘ
iter_map_windows
#87155)f
for each contiguous window of size N
over
self
and returns an iterator over the outputs of f
. Like slice::windows()
,
the windows during mapping overlap as well. Read more1.0.0 · Source§fn inspect<F>(self, f: F) -> Inspect<Self, F> ⓘ
fn inspect<F>(self, f: F) -> Inspect<Self, F> ⓘ
1.0.0 · Source§fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Source§fn try_collect<B>(
&mut self,
) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
fn try_collect<B>( &mut self, ) -> <<Self::Item as Try>::Residual as Residual<B>>::TryType
iterator_try_collect
#94047)Source§fn collect_into<E>(self, collection: &mut E) -> &mut E
fn collect_into<E>(self, collection: &mut E) -> &mut E
iter_collect_into
#94780)1.0.0 · Source§fn partition<B, F>(self, f: F) -> (B, B)
fn partition<B, F>(self, f: F) -> (B, B)
Source§fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
fn partition_in_place<'a, T, P>(self, predicate: P) -> usize
iter_partition_in_place
#62543)true
precede all those that return false
.
Returns the number of true
elements found. Read moreSource§fn is_partitioned<P>(self, predicate: P) -> bool
fn is_partitioned<P>(self, predicate: P) -> bool
iter_is_partitioned
#62544)true
precede all those that return false
. Read more1.27.0 · Source§fn try_for_each<F, R>(&mut self, f: F) -> R
fn try_for_each<F, R>(&mut self, f: F) -> R
1.51.0 · Source§fn reduce<F>(self, f: F) -> Option<Self::Item>
fn reduce<F>(self, f: F) -> Option<Self::Item>
Source§fn try_reduce<R>(
&mut self,
f: impl FnMut(Self::Item, Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
iterator_try_reduce
#87053)1.0.0 · Source§fn all<F>(&mut self, f: F) -> bool
fn all<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn any<F>(&mut self, f: F) -> bool
fn any<F>(&mut self, f: F) -> bool
1.0.0 · Source§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
1.30.0 · Source§fn find_map<B, F>(&mut self, f: F) -> Option<B>
fn find_map<B, F>(&mut self, f: F) -> Option<B>
Source§fn try_find<R>(
&mut self,
f: impl FnMut(&Self::Item) -> R,
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
try_find
#63178)1.0.0 · Source§fn position<P>(&mut self, predicate: P) -> Option<usize>
fn position<P>(&mut self, predicate: P) -> Option<usize>
1.0.0 · Source§fn rposition<P>(&mut self, predicate: P) -> Option<usize>
fn rposition<P>(&mut self, predicate: P) -> Option<usize>
1.6.0 · Source§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn max_by<F>(self, compare: F) -> Option<Self::Item>
fn max_by<F>(self, compare: F) -> Option<Self::Item>
1.6.0 · Source§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
1.15.0 · Source§fn min_by<F>(self, compare: F) -> Option<Self::Item>
fn min_by<F>(self, compare: F) -> Option<Self::Item>
1.0.0 · Source§fn rev(self) -> Rev<Self> ⓘwhere
Self: Sized + DoubleEndedIterator,
fn rev(self) -> Rev<Self> ⓘwhere
Self: Sized + DoubleEndedIterator,
1.0.0 · Source§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
1.36.0 · Source§fn copied<'a, T>(self) -> Copied<Self> ⓘ
fn copied<'a, T>(self) -> Copied<Self> ⓘ
Source§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N> ⓘwhere
Self: Sized,
fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N> ⓘwhere
Self: Sized,
iter_array_chunks
#100450)N
elements of the iterator at a time. Read more1.11.0 · Source§fn product<P>(self) -> P
fn product<P>(self) -> P
Source§fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
iter_order_by
#64295)Iterator
with those
of another with respect to the specified comparison function. Read more1.5.0 · Source§fn partial_cmp<I>(self, other: I) -> Option<Ordering>
fn partial_cmp<I>(self, other: I) -> Option<Ordering>
PartialOrd
elements of
this Iterator
with those of another. The comparison works like short-circuit
evaluation, returning a result without comparing the remaining elements.
As soon as an order can be determined, the evaluation stops and a result is returned. Read moreSource§fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
Self: Sized,
I: IntoIterator,
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
iter_order_by
#64295)Iterator
with those
of another with respect to the specified comparison function. Read moreSource§fn eq_by<I, F>(self, other: I, eq: F) -> bool
fn eq_by<I, F>(self, other: I, eq: F) -> bool
iter_order_by
#64295)1.5.0 · Source§fn lt<I>(self, other: I) -> bool
fn lt<I>(self, other: I) -> bool
Iterator
are lexicographically
less than those of another. Read more1.5.0 · Source§fn le<I>(self, other: I) -> bool
fn le<I>(self, other: I) -> bool
Iterator
are lexicographically
less or equal to those of another. Read more1.5.0 · Source§fn gt<I>(self, other: I) -> bool
fn gt<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than those of another. Read more1.5.0 · Source§fn ge<I>(self, other: I) -> bool
fn ge<I>(self, other: I) -> bool
Iterator
are lexicographically
greater than or equal to those of another. Read more1.82.0 · Source§fn is_sorted_by<F>(self, compare: F) -> bool
fn is_sorted_by<F>(self, compare: F) -> bool
1.82.0 · Source§fn is_sorted_by_key<F, K>(self, f: F) -> bool
fn is_sorted_by_key<F, K>(self, f: F) -> bool
1.26.0 · Source§impl<Idx> PartialEq for RangeInclusive<Idx>where
Idx: PartialEq,
impl<Idx> PartialEq for RangeInclusive<Idx>where
Idx: PartialEq,
1.28.0 · Source§impl<T> RangeBounds<T> for RangeInclusive<&T>
impl<T> RangeBounds<T> for RangeInclusive<&T>
1.28.0 · Source§impl<T> RangeBounds<T> for RangeInclusive<T>
impl<T> RangeBounds<T> for RangeInclusive<T>
1.26.0 · Source§impl<T> SliceIndex<[T]> for RangeInclusive<usize>
The methods index
and index_mut
panic if:
impl<T> SliceIndex<[T]> for RangeInclusive<usize>
The methods index
and index_mut
panic if:
- the end of the range is
usize::MAX
or - the start of the range is greater than the end of the range or
- the end of the range is out of bounds.
Source§fn get(self, slice: &[T]) -> Option<&[T]>
fn get(self, slice: &[T]) -> Option<&[T]>
slice_index_methods
)Source§fn get_mut(self, slice: &mut [T]) -> Option<&mut [T]>
fn get_mut(self, slice: &mut [T]) -> Option<&mut [T]>
slice_index_methods
)Source§unsafe fn get_unchecked(self, slice: *const [T]) -> *const [T]
unsafe fn get_unchecked(self, slice: *const [T]) -> *const [T]
slice_index_methods
)Source§unsafe fn get_unchecked_mut(self, slice: *mut [T]) -> *mut [T]
unsafe fn get_unchecked_mut(self, slice: *mut [T]) -> *mut [T]
slice_index_methods
)1.26.0 · Source§impl SliceIndex<str> for RangeInclusive<usize>
Implements substring slicing with syntax &self[begin ..= end]
or &mut self[begin ..= end]
.
impl SliceIndex<str> for RangeInclusive<usize>
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
]. Equivalent to &self [begin .. end + 1]
or &mut self[begin .. end + 1]
, except if end
has the maximum value for
usize
.
This operation is O(1).
§Panics
Panics if begin
does not point to the starting byte offset of
a character (as defined by is_char_boundary
), if end
does not point
to the ending byte offset of a character (end + 1
is either a starting
byte offset or equal to len
), if begin > end
, or if end >= len
.
Source§fn get(
self,
slice: &str,
) -> Option<&<RangeInclusive<usize> as SliceIndex<str>>::Output>
fn get( self, slice: &str, ) -> Option<&<RangeInclusive<usize> as SliceIndex<str>>::Output>
slice_index_methods
)Source§fn get_mut(
self,
slice: &mut str,
) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
fn get_mut( self, slice: &mut str, ) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
slice_index_methods
)Source§unsafe fn get_unchecked(
self,
slice: *const str,
) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
unsafe fn get_unchecked( self, slice: *const str, ) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
slice_index_methods
)Source§unsafe fn get_unchecked_mut(
self,
slice: *mut str,
) -> *mut <RangeInclusive<usize> as SliceIndex<str>>::Output
unsafe fn get_unchecked_mut( self, slice: *mut str, ) -> *mut <RangeInclusive<usize> as SliceIndex<str>>::Output
slice_index_methods
)Source§fn index(
self,
slice: &str,
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output ⓘ
fn index( self, slice: &str, ) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output ⓘ
slice_index_methods
)Source§fn index_mut(
self,
slice: &mut str,
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output ⓘ
fn index_mut( self, slice: &mut str, ) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output ⓘ
slice_index_methods
)