On this page
Struct std::ops::RangeTo
pub struct RangeTo<Idx> {
pub end: Idx,
}
A range only bounded exclusively above (..end).
The RangeTo ..end contains all values with x < end. It cannot serve as an Iterator because it doesn’t have a starting point.
Examples
The ..end syntax is a RangeTo:
assert_eq!((..5), std::ops::RangeTo { end: 5 });
It does not have an IntoIterator implementation, so you can’t use it in a for loop directly. This won’t compile:
// error[E0277]: the trait bound `std::ops::RangeTo<{integer}>:
// std::iter::Iterator` is not satisfied
for i in ..5 {
// ...
}
When used as a slicing index, RangeTo produces a slice of all array elements before the index indicated by end.
let arr = [0, 1, 2, 3, 4];
assert_eq!(arr[ .. ], [0, 1, 2, 3, 4]);
assert_eq!(arr[ .. 3], [0, 1, 2 ]); // This is a `RangeTo`
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 ]);
Fields
end: Idx
The upper bound of the range (exclusive).
Implementations
impl<Idx> RangeTo<Idx>
where
Idx: PartialOrd,
pub fn contains<U>(&self, item: &U) -> bool
where
Idx: PartialOrd<U>,
U: PartialOrd<Idx> + ?Sized,
Returns true if item is contained in the range.
Examples
assert!( (..5).contains(&-1_000_000_000));
assert!( (..5).contains(&4));
assert!(!(..5).contains(&5));
assert!( (..1.0).contains(&0.5));
assert!(!(..1.0).contains(&f32::NAN));
assert!(!(..f32::NAN).contains(&0.5));
Trait Implementations
impl<Idx> Clone for RangeTo<Idx>
where
Idx: Clone,
fn clone(&self) -> RangeTo<Idx>
fn clone_from(&mut self, source: &Self)
source. Read more
impl<Idx> Debug for RangeTo<Idx>
where
Idx: Debug,
fn fmt(&self, fmt: &mut Formatter<'_>) -> Result<(), Error>
impl<Idx> Hash for RangeTo<Idx>
where
Idx: Hash,
fn hash<__H>(&self, state: &mut __H)
where
__H: Hasher,
fn hash_slice<H>(data: &[Self], state: &mut H)
where
H: Hasher,
Self: Sized,
impl Index<RangeTo<usize>> for String
type Output = str
fn index(&self, index: RangeTo<usize>) -> &str
container[index]) operation. Read more
impl IndexMut<RangeTo<usize>> for String
fn index_mut(&mut self, index: RangeTo<usize>) -> &mut str
container[index]) operation. Read more
impl<Idx> PartialEq for RangeTo<Idx>
where
Idx: PartialEq,
fn eq(&self, other: &RangeTo<Idx>) -> bool
self and other values to be equal, and is used by ==.
fn ne(&self, other: &Rhs) -> bool
!=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
impl<T> RangeBounds<T> for RangeTo<&T>
fn start_bound(&self) -> Bound<&T>
fn end_bound(&self) -> Bound<&T>
fn contains<U>(&self, item: &U) -> bool
where
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
impl<T> RangeBounds<T> for RangeTo<T>
fn start_bound(&self) -> Bound<&T>
fn end_bound(&self) -> Bound<&T>
fn contains<U>(&self, item: &U) -> bool
where
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,
impl<T> SliceIndex<[T]> for RangeTo<usize>
type Output = [T]
fn get(self, slice: &[T]) -> Option<&[T]>
slice_index_methods)
fn get_mut(self, slice: &mut [T]) -> Option<&mut [T]>
slice_index_methods)
unsafe fn get_unchecked(self, slice: *const [T]) -> *const [T]
slice_index_methods)
slice pointer is undefined behavior even if the resulting reference is not used.
unsafe fn get_unchecked_mut(self, slice: *mut [T]) -> *mut [T]
slice_index_methods)
slice pointer is undefined behavior even if the resulting reference is not used.
fn index(self, slice: &[T]) -> &[T]
slice_index_methods)
fn index_mut(self, slice: &mut [T]) -> &mut [T]
slice_index_methods)
impl SliceIndex<str> for RangeTo<usize>
Implements substring slicing with syntax &self[.. end] or &mut self[.. end].
Returns a slice of the given string from the byte range [0, end). Equivalent to &self[0 .. end] or &mut self[0 .. end].
This operation is O(1).
Prior to 1.20.0, these indexing operations were still supported by direct implementation of Index and IndexMut.
Panics
Panics if end does not point to the starting byte offset of a character (as defined by is_char_boundary), or if end > len.
type Output = str
fn get(
self,
slice: &str
) -> Option<&<RangeTo<usize> as SliceIndex<str>>::Output>
slice_index_methods)
fn get_mut(
self,
slice: &mut str
) -> Option<&mut <RangeTo<usize> as SliceIndex<str>>::Output>
slice_index_methods)
unsafe fn get_unchecked(
self,
slice: *const str
) -> *const <RangeTo<usize> as SliceIndex<str>>::Output
slice_index_methods)
slice pointer is undefined behavior even if the resulting reference is not used.
unsafe fn get_unchecked_mut(
self,
slice: *mut str
) -> *mut <RangeTo<usize> as SliceIndex<str>>::Output
slice_index_methods)
slice pointer is undefined behavior even if the resulting reference is not used.
fn index(self, slice: &str) -> &<RangeTo<usize> as SliceIndex<str>>::Output
slice_index_methods)
fn index_mut(
self,
slice: &mut str
) -> &mut <RangeTo<usize> as SliceIndex<str>>::Output
slice_index_methods)
impl<Idx> Copy for RangeTo<Idx>
where
Idx: Copy,
impl<Idx> Eq for RangeTo<Idx>
where
Idx: Eq,
impl<T> OneSidedRange<T> for RangeTo<T>
where
RangeTo<T>: RangeBounds<T>,
impl<Idx> StructuralEq for RangeTo<Idx>
impl<Idx> StructuralPartialEq for RangeTo<Idx>
Auto Trait Implementations
impl<Idx> RefUnwindSafe for RangeTo<Idx>
where
Idx: RefUnwindSafe,
impl<Idx> Send for RangeTo<Idx>
where
Idx: Send,
impl<Idx> Sync for RangeTo<Idx>
where
Idx: Sync,
impl<Idx> Unpin for RangeTo<Idx>
where
Idx: Unpin,
impl<Idx> UnwindSafe for RangeTo<Idx>
where
Idx: UnwindSafe,
Blanket Implementations
impl<T> Any for T
where
T: 'static + ?Sized,
impl<T> Borrow<T> for T
where
T: ?Sized,
impl<T> BorrowMut<T> for T
where
T: ?Sized,
impl<T> From<T> for T
fn from(t: T) -> T
Returns the argument unchanged.
impl<T, U> Into<U> for T
where
U: From<T>,
fn into(self) -> U
Calls U::from(self).
That is, this conversion is whatever the implementation of From<T> for U chooses to do.
impl<T> ToOwned for T
where
T: Clone,
type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T, U> TryFrom<U> for T
where
U: Into<T>,
type Error = Infallible
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for T
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/ops/struct.RangeTo.html