1.26.0[][src]Struct std::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]

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 F
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

Important traits for &'_ mut F
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> RangeInclusive<Idx> where
    Idx: PartialOrd<Idx>, 
[src]

pub fn contains<U>(&self, item: &U) -> bool where
    Idx: PartialOrd<U>,
    U: PartialOrd<Idx> + ?Sized
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> 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<A> FusedIterator for RangeInclusive<A> where
    A: Step
[src]

impl<Idx> Eq for RangeInclusive<Idx> where
    Idx: Eq
[src]

impl<Idx> Debug for RangeInclusive<Idx> where
    Idx: Debug
[src]

impl<Idx> PartialEq<RangeInclusive<Idx>> for RangeInclusive<Idx> where
    Idx: PartialEq<Idx>, 
[src]

impl<Idx> Hash for RangeInclusive<Idx> where
    Idx: Hash
[src]

impl ExactSizeIterator for RangeInclusive<i8>[src]

impl ExactSizeIterator for RangeInclusive<i16>[src]

impl ExactSizeIterator for RangeInclusive<u8>[src]

impl ExactSizeIterator for RangeInclusive<u16>[src]

impl TrustedLen for RangeInclusive<u64>[src]

impl TrustedLen for RangeInclusive<u128>[src]

impl TrustedLen for RangeInclusive<u32>[src]

impl TrustedLen for RangeInclusive<i64>[src]

impl TrustedLen for RangeInclusive<u16>[src]

impl TrustedLen for RangeInclusive<isize>[src]

impl TrustedLen for RangeInclusive<usize>[src]

impl TrustedLen for RangeInclusive<i128>[src]

impl TrustedLen for RangeInclusive<u8>[src]

impl TrustedLen for RangeInclusive<i32>[src]

impl TrustedLen for RangeInclusive<i8>[src]

impl TrustedLen for RangeInclusive<i16>[src]

impl<T> RangeBounds<T> for RangeInclusive<T>1.28.0[src]

impl<'_, T> RangeBounds<T> for RangeInclusive<&'_ T>1.28.0[src]

impl<Idx> Clone for RangeInclusive<Idx> where
    Idx: Clone
[src]

impl<A> DoubleEndedIterator for RangeInclusive<A> where
    A: Step
[src]

impl<A> Iterator for RangeInclusive<A> where
    A: Step
[src]

type Item = A

The type of the elements being iterated over.

impl IndexMut<RangeInclusive<usize>> for String[src]

impl Index<RangeInclusive<usize>> for String[src]

type Output = str

The returned type after indexing.

Auto Trait Implementations

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

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

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

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

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

Blanket Implementations

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

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, U> Into<U> for T where
    U: From<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<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

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]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.