1.26.0[−][src]Struct core::ops::RangeInclusive
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
assert_eq!((3..=5), std::ops::RangeInclusive::new(3, 5)); assert_eq!(3 + 4 + 5, (3..=5).sum()); 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 ]); assert_eq!(arr[1..=3], [ 1,2,3 ]); // RangeInclusiveRun
Methods
impl<Idx> RangeInclusive<Idx>
[src][−]
pub const fn new(start: Idx, end: Idx) -> Self
1.27.0[src][−]
Creates a new inclusive range. Equivalent to writing start..=end
.
Examples
use std::ops::RangeInclusive; assert_eq!(3..=5, RangeInclusive::new(3, 5));Run
pub const fn start(&self) -> &Idx
1.27.0[src][−]
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
assert_eq!((3..=5).start(), &3);Run
pub const fn end(&self) -> &Idx
1.27.0[src][−]
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
assert_eq!((3..=5).end(), &5);Run
pub fn into_inner(self) -> (Idx, Idx)
1.27.0[src][−]
impl<Idx: PartialOrd<Idx>> RangeInclusive<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
use std::f32; 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));Run
pub fn is_empty(&self) -> bool
[src][−]
🔬 This is a nightly-only experimental API. (range_is_empty
#48111)
recently added
Returns true
if the range contains no items.
Examples
#![feature(range_is_empty)] 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:
#![feature(range_is_empty)] use std::f32::NAN; assert!(!(3.0..=5.0).is_empty()); assert!( (3.0..=NAN).is_empty()); assert!( (NAN..=5.0).is_empty());Run
This method returns true
after iteration has finished:
#![feature(range_is_empty)] let mut r = 3..=5; for _ in r.by_ref() {} // Precise field values are unspecified here assert!(r.is_empty());Run
Trait Implementations
impl<T> RangeBounds<T> for RangeInclusive<T>
1.28.0[src][+]
impl<T, '_> RangeBounds<T> for RangeInclusive<&'_ T>
1.28.0[src][+]
impl<Idx: PartialEq> PartialEq<RangeInclusive<Idx>> for RangeInclusive<Idx>
[src][+]
impl<Idx: Eq> Eq for RangeInclusive<Idx>
[src]
impl<Idx: Clone> Clone for RangeInclusive<Idx>
[src][+]
impl<A: Step> Iterator for RangeInclusive<A>
[src][+]
impl<A: Step> DoubleEndedIterator for RangeInclusive<A>
[src][+]
impl ExactSizeIterator for RangeInclusive<u8>
[src][+]
impl ExactSizeIterator for RangeInclusive<u16>
[src][+]
impl ExactSizeIterator for RangeInclusive<i8>
[src][+]
impl ExactSizeIterator for RangeInclusive<i16>
[src][+]
impl<A: Step> FusedIterator for RangeInclusive<A>
[src]
impl TrustedLen for RangeInclusive<usize>
[src]
impl TrustedLen for RangeInclusive<isize>
[src]
impl TrustedLen for RangeInclusive<u8>
[src]
impl TrustedLen for RangeInclusive<i8>
[src]
impl TrustedLen for RangeInclusive<u16>
[src]
impl TrustedLen for RangeInclusive<i16>
[src]
impl TrustedLen for RangeInclusive<u32>
[src]
impl TrustedLen for RangeInclusive<i32>
[src]
impl TrustedLen for RangeInclusive<u64>
[src]
impl TrustedLen for RangeInclusive<i64>
[src]
impl TrustedLen for RangeInclusive<u128>
[src]
impl TrustedLen for RangeInclusive<i128>
[src]
impl<T> SliceIndex<[T]> for RangeInclusive<usize>
[src][+]
impl SliceIndex<str> for RangeInclusive<usize>
[src][+]
type Output = str
fn get(self, slice: &str) -> Option<&Self::Output>
[src][−]
fn get_mut(self, slice: &mut str) -> Option<&mut Self::Output>
[src][−]
unsafe fn get_unchecked(self, slice: &str) -> &Self::Output
[src][−]
unsafe fn get_unchecked_mut(self, slice: &mut str) -> &mut Self::Output
[src][−]
fn index(self, slice: &str) -> &Self::Output
[src][−]
fn index_mut(self, slice: &mut str) -> &mut Self::Output
[src][−]
impl<Idx: Hash> Hash for RangeInclusive<Idx>
[src][+]
impl<Idx: Debug> Debug for RangeInclusive<Idx>
[src][+]
Auto Trait Implementations
impl<Idx> Send for RangeInclusive<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Sync for RangeInclusive<Idx> where
Idx: Sync,
Idx: Sync,
Blanket Implementations
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T> From<T> for T
[src][+]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,