pub struct RangeTo<Idx> {
pub end: Idx,
}
new_range_api #125687)
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.
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 ]);
end: Idxnew_range_api #125687)
The upper bound of the range (exclusive).
impl<Idx> RangeTo<Idx>where
Idx: PartialOrd,pub fn contains<U>(&self, item: &U) -> boolwhere
Idx: PartialOrd<U>,
U: PartialOrd<Idx> + ?Sized,Returns true if item is contained in the range.
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));
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 ByteString
type Output = ByteStr
fn index(&self, r: RangeTo<usize>) -> &ByteStr
container[index]) operation. Read more
impl IndexMut<RangeTo<usize>> for ByteString
fn index_mut(&mut self, r: RangeTo<usize>) -> &mut ByteStr
container[index]) operation. Read more
impl<T> IntoBounds<T> for RangeTo<T>
fn into_bounds(self) -> (Bound<T>, Bound<T>)
range_into_bounds #136903)
(start_bound, end_bound). Read more
fn intersect<R>(self, other: R) -> (Bound<T>, Bound<T>)where
Self: Sized,
T: Ord,
R: IntoBounds<T>,range_into_bounds #136903)
impl<T> OneSidedRange<T> for RangeTo<T>where
RangeTo<T>: RangeBounds<T>,fn bound(self) -> (OneSidedRangeBound, T)
one_sided_range #69780)
split_off and split_off_mut that returns the bound of the one-sided range.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>If you need to use this implementation where T is unsized, consider using the RangeBounds impl for a 2-tuple of Bound<&T>, i.e. replace ..end with (Bound::Unbounded, Bound::Excluded(end)).
fn start_bound(&self) -> Bound<&T>
fn end_bound(&self) -> Bound<&T>
fn contains<U>(&self, item: &U) -> boolwhere
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,fn is_empty(&self) -> boolwhere
T: PartialOrd,range_bounds_is_empty #137300)
true if the range contains no items. One-sided ranges (RangeFrom, etc) always return false. Read more
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) -> boolwhere
T: PartialOrd<U>,
U: PartialOrd<T> + ?Sized,fn is_empty(&self) -> boolwhere
T: PartialOrd,range_bounds_is_empty #137300)
true if the range contains no items. One-sided ranges (RangeFrom, etc) always return false. Read more
impl<T> SliceIndex<[T]> for RangeTo<usize>The methods index and index_mut panic if the end of the range is out of bounds.
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)
unsafe fn get_unchecked_mut(self, slice: *mut [T]) -> *mut [T]
slice_index_methods)
fn index(self, slice: &[T]) -> &[T]
slice_index_methods)
fn index_mut(self, slice: &mut [T]) -> &mut [T]
slice_index_methods)
impl SliceIndex<ByteStr> for RangeTo<usize>
type Output = ByteStr
fn get(
self,
slice: &ByteStr,
) -> Option<&<RangeTo<usize> as SliceIndex<ByteStr>>::Output>slice_index_methods)
fn get_mut(
self,
slice: &mut ByteStr,
) -> Option<&mut <RangeTo<usize> as SliceIndex<ByteStr>>::Output>slice_index_methods)
unsafe fn get_unchecked(
self,
slice: *const ByteStr,
) -> *const <RangeTo<usize> as SliceIndex<ByteStr>>::Outputslice_index_methods)
unsafe fn get_unchecked_mut(
self,
slice: *mut ByteStr,
) -> *mut <RangeTo<usize> as SliceIndex<ByteStr>>::Outputslice_index_methods)
fn index(
self,
slice: &ByteStr,
) -> &<RangeTo<usize> as SliceIndex<ByteStr>>::Outputslice_index_methods)
fn index_mut(
self,
slice: &mut ByteStr,
) -> &mut <RangeTo<usize> as SliceIndex<ByteStr>>::Outputslice_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 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>>::Outputslice_index_methods)
unsafe fn get_unchecked_mut(
self,
slice: *mut str,
) -> *mut <RangeTo<usize> as SliceIndex<str>>::Outputslice_index_methods)
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>>::Outputslice_index_methods)
impl<Idx> Copy for RangeTo<Idx>where
Idx: Copy,impl<Idx> Eq for RangeTo<Idx>where
Idx: Eq,impl<Idx> StructuralPartialEq for RangeTo<Idx>
impl<Idx> Freeze for RangeTo<Idx>where
Idx: Freeze,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,impl<T> Any for Twhere
T: 'static + ?Sized,impl<T> Borrow<T> for Twhere
T: ?Sized,impl<T> BorrowMut<T> for Twhere
T: ?Sized,impl<T> CloneToUninit for Twhere
T: Clone,unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit #126799)
impl<T> From<T> for T
fn from(t: T) -> T
Returns the argument unchanged.
impl<T, U> Into<U> for Twhere
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 Twhere
T: Clone,type Owned = T
fn to_owned(&self) -> T
fn clone_into(&self, target: &mut T)
impl<T, U> TryFrom<U> for Twhere
U: Into<T>,type Error = Infallible
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,
Β© 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/range/struct.RangeTo.html