1.26.0[−][src]Struct nom::lib::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 ]); // RangeInclusive
Implementations
impl<Idx> RangeInclusive<Idx>
[src][−]
pub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx>ⓘNotable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
1.27.0[src][−]
Notable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
Creates a new inclusive range. Equivalent to writing start..=end
.
Examples
use std::ops::RangeInclusive; assert_eq!(3..=5, RangeInclusive::new(3, 5));
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);
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);
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));
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
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));
pub fn is_empty(&self) -> bool
1.47.0[src][−]
Returns true
if the range contains no items.
Examples
assert!(!(3..=5).is_empty()); assert!(!(3..=3).is_empty()); assert!( (3..=2).is_empty());
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:
let mut r = 3..=5; for _ in r.by_ref() {} // Precise field values are unspecified here assert!(r.is_empty());
Trait Implementations
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<A> DoubleEndedIterator for RangeInclusive<A> where
A: Step,
[src][+]
A: Step,
impl<Idx> Eq for RangeInclusive<Idx> where
Idx: Eq,
[src]
Idx: Eq,
impl ExactSizeIterator for RangeInclusive<u16>
[src][+]
impl ExactSizeIterator for RangeInclusive<u8>
[src][+]
impl ExactSizeIterator for RangeInclusive<i16>
[src][+]
impl ExactSizeIterator for RangeInclusive<i8>
[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 Index<RangeInclusive<usize>> for String
[src][+]
impl IndexMut<RangeInclusive<usize>> for String
[src][+]
impl<A> Iterator 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> RangeBounds<T> for RangeInclusive<T>
1.28.0[src][+]
impl<'_, T> RangeBounds<T> for RangeInclusive<&'_ T>
1.28.0[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<&<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>
unsafe fn get_unchecked(
self,
slice: *const str
) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
[src][−]
self,
slice: *const str
) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
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
fn index(
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src][−]
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::Outputⓘ
Notable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
fn index_mut(
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src][−]
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::Outputⓘ
Notable traits for RangeInclusive<A>
impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
impl<Idx> StructuralEq for RangeInclusive<Idx>
[src]
impl<Idx> StructuralPartialEq for RangeInclusive<Idx>
[src]
impl<A> TrustedLen for RangeInclusive<A> where
A: Step,
[src]
A: Step,
Auto Trait Implementations
impl<Idx> RefUnwindSafe for RangeInclusive<Idx> where
Idx: RefUnwindSafe,
Idx: RefUnwindSafe,
impl<Idx> Send for RangeInclusive<Idx> where
Idx: Send,
Idx: Send,
impl<Idx> Sync for RangeInclusive<Idx> where
Idx: Sync,
Idx: Sync,
impl<Idx> Unpin for RangeInclusive<Idx> where
Idx: Unpin,
Idx: Unpin,
impl<Idx> UnwindSafe for RangeInclusive<Idx> where
Idx: UnwindSafe,
Idx: UnwindSafe,
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,
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> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<I> IntoIterator for I where
I: Iterator,
[src][+]
I: Iterator,
impl<T> ToOwned for T where
T: Clone,
[src][+]
T: Clone,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,