1.26.0[−][src]Struct std::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][−]
ⓘImportant traits for RangeInclusive<A>pub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx>
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
ⓘImportant traits for &'_ mut Fpub 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
ⓘImportant traits for &'_ mut Fpub 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> RangeInclusive<Idx> where
Idx: PartialOrd<Idx>,
[src][−]
Idx: PartialOrd<Idx>,
pub fn contains<U>(&self, item: &U) -> bool where
Idx: PartialOrd<U>,
U: PartialOrd<Idx> + ?Sized,
1.35.0[src][−]
Idx: PartialOrd<U>,
U: PartialOrd<Idx> + ?Sized,
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<A> FusedIterator for RangeInclusive<A> where
A: Step,
[src]
A: Step,
impl<Idx> Hash for RangeInclusive<Idx> where
Idx: Hash,
[src][+]
Idx: Hash,
impl<Idx> Eq for RangeInclusive<Idx> where
Idx: Eq,
[src]
Idx: Eq,
impl<Idx> Clone for RangeInclusive<Idx> where
Idx: Clone,
[src][+]
Idx: Clone,
impl<Idx> Debug for RangeInclusive<Idx> where
Idx: Debug,
[src][+]
Idx: Debug,
impl TrustedLen for RangeInclusive<usize>
[src]
impl TrustedLen for RangeInclusive<i8>
[src]
impl TrustedLen for RangeInclusive<isize>
[src]
impl TrustedLen for RangeInclusive<u8>
[src]
impl TrustedLen for RangeInclusive<u64>
[src]
impl TrustedLen for RangeInclusive<i16>
[src]
impl TrustedLen for RangeInclusive<u16>
[src]
impl TrustedLen for RangeInclusive<u32>
[src]
impl TrustedLen for RangeInclusive<u128>
[src]
impl TrustedLen for RangeInclusive<i32>
[src]
impl TrustedLen for RangeInclusive<i128>
[src]
impl TrustedLen for RangeInclusive<i64>
[src]
impl<A> DoubleEndedIterator for RangeInclusive<A> where
A: Step,
[src][+]
A: Step,
impl<Idx> PartialEq<RangeInclusive<Idx>> for RangeInclusive<Idx> where
Idx: PartialEq<Idx>,
[src][+]
Idx: PartialEq<Idx>,
impl<T> SliceIndex<[T]> for RangeInclusive<usize>
[src][+]
impl SliceIndex<str> for RangeInclusive<usize>
[src][+]
type Output = str
fn get(
self,
slice: &str
) -> Option<&<RangeInclusive<usize> as SliceIndex<str>>::Output>
[src][−]
self,
slice: &str
) -> Option<&<RangeInclusive<usize> as SliceIndex<str>>::Output>
fn get_mut(
self,
slice: &mut str
) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
[src][−]
self,
slice: &mut str
) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
ⓘImportant traits for RangeInclusive<A>unsafe fn get_unchecked(
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output
[src][−]
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output
ⓘImportant traits for RangeInclusive<A>unsafe fn get_unchecked_mut(
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output
[src][−]
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output
ⓘImportant traits for RangeInclusive<A>fn index(
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output
[src][−]
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Output
ⓘImportant traits for RangeInclusive<A>fn index_mut(
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output
[src][−]
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Output
impl<A> Iterator for RangeInclusive<A> where
A: Step,
[src][+]
A: Step,
impl ExactSizeIterator for RangeInclusive<u16>
[src][+]
impl ExactSizeIterator for RangeInclusive<i16>
[src][+]
impl ExactSizeIterator for RangeInclusive<i8>
[src][+]
impl ExactSizeIterator for RangeInclusive<u8>
[src][+]
impl IndexMut<RangeInclusive<usize>> for String
[src][+]
impl Index<RangeInclusive<usize>> for String
[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> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<I> IntoIterator for I where
I: Iterator,
[src][+]
I: Iterator,
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> 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,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,