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) -> Self
pub const fn new(start: Idx, end: Idx) -> Self
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: PartialOrd<Idx>> RangeInclusive<Idx>
impl<Idx: PartialOrd<Idx>> RangeInclusive<Idx>
1.35.0 (const: unstable) · 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 (const: unstable) · Sourcepub fn is_empty(&self) -> boolwhere
Idx: PartialOrd,
pub fn is_empty(&self) -> boolwhere
Idx: PartialOrd,
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> Clone for RangeInclusive<Idx>
impl<Idx: Clone> Clone for RangeInclusive<Idx>
1.26.0 · Source§impl<Idx: Debug> Debug for RangeInclusive<Idx>
impl<Idx: Debug> Debug for RangeInclusive<Idx>
1.26.0 · Source§impl<A: Step> DoubleEndedIterator for RangeInclusive<A>
impl<A: Step> DoubleEndedIterator for RangeInclusive<A>
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>
nth element from the end of the iterator. Read moreSource§fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R
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
Source§fn next_chunk_back<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
fn next_chunk_back<const N: usize>(
&mut self,
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
Self: Sized,
iter_next_chunk #98326)N values in sequence. Read moreimpl<Idx: Eq> Eq for RangeInclusive<Idx>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<u8>
impl ExactSizeIterator for RangeInclusive<u8>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<i8>
impl ExactSizeIterator for RangeInclusive<i8>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<NonZero<u8>>
impl ExactSizeIterator for RangeInclusive<NonZero<u8>>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<NonZero<u16>>
impl ExactSizeIterator for RangeInclusive<NonZero<u16>>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<NonZero<usize>>
impl ExactSizeIterator for RangeInclusive<NonZero<usize>>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<u16>
impl ExactSizeIterator for RangeInclusive<u16>
1.26.0 · Source§impl ExactSizeIterator for RangeInclusive<i16>
impl ExactSizeIterator for RangeInclusive<i16>
1.95.0 (const: unstable) · Source§impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
Source§fn from(value: RangeInclusive<T>) -> Self
fn from(value: RangeInclusive<T>) -> Self
1.95.0 (const: unstable) · Source§impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
impl<T> From<RangeInclusive<T>> for RangeInclusive<T>
Source§fn from(value: RangeInclusive<T>) -> Self
fn from(value: RangeInclusive<T>) -> Self
Converts from a legacy range to a non-legacy range, potentially panicking.
§Panics
If the legacy range iterator has been exhausted, this function will either panic or return an empty range.
§Examples
use core::range::legacy;
use core::range::RangeInclusive;
let single: legacy::RangeInclusive<i32> = 0..=1;
let single = RangeInclusive::from(single);
assert_eq!((single.start, single.last), (0, 1));
let empty: legacy::RangeInclusive<i32> = 0..=0;
let empty = RangeInclusive::from(empty);
assert_eq!((empty.start, empty.last), (0, 0));use core::range::legacy;
use core::range::RangeInclusive;
use std::panic::catch_unwind;
let mut exhausted: legacy::RangeInclusive<i32> = 0..=0;
exhausted.next();
let result = catch_unwind(|| RangeInclusive::from(exhausted));
// The `from` call either panicked or returned an empty range.
assert!(result.is_err() || result.is_ok_and(|range| range.is_empty()));impl<A: Step> FusedIterator for RangeInclusive<A>
Source§impl GetDisjointMutIndex for RangeInclusive<usize>
impl GetDisjointMutIndex for RangeInclusive<usize>
Source§fn is_in_bounds(&self, len: usize) -> bool
fn is_in_bounds(&self, len: usize) -> bool
get_disjoint_mut_helpers)true if self is in bounds for len slice elements.Source§fn is_overlapping(&self, other: &Self) -> bool
fn is_overlapping(&self, other: &Self) -> bool
get_disjoint_mut_helpers)