1.26.0[][src]Struct core::ops::RangeInclusive

pub struct RangeInclusive<Idx> { /* fields omitted */ }

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) -> Self1.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) -> &Idx1.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) -> &Idx1.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]

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

assert_eq!((3..=5).into_inner(), (3, 5));Run

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]

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]

type Item = A

The type of the elements being iterated over.

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]

type Output = [T]

The output type returned by methods.

impl SliceIndex<str> for RangeInclusive<usize>[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]. 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.

type Output = str

The output type returned by methods.

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

impl<Idx> Sync for RangeInclusive<Idx> where
    Idx: Sync

impl<Idx> Unpin for RangeInclusive<Idx> where
    Idx: Unpin

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]