[−][src]Struct indexing::Range
A branded range.
Range<'id>
only indexes the container instantiated with the exact same
lifetime for the parameter 'id
created by the scope
function.
The range may carry a proof of non-emptiness (Emptiness
),
which enables further operations.
Methods
impl<'id, I: Idx> Range<'id, I, Unknown>
[src]
pub fn from<P, Q>(start: Index<'id, I, P>, end: Index<'id, I, Q>) -> Self
[src]
Construct a range from two trusted indices.
impl<'id, I: Idx, Emptiness> Range<'id, I, Emptiness>
[src]
pub fn untrusted(&self) -> Range<I>
[src]
This range without the branding.
pub fn erased(&self) -> Range<'id, I, Unknown>
[src]
This range without the emptiness proof.
pub fn len(&self) -> I
[src]
The length of the range.
pub fn is_empty(&self) -> bool
[src]
true
if the range is empty.
pub fn nonempty(&self) -> Option<Range<'id, I, NonEmpty>>
[src]
Try to create a proof that the range is nonempty.
pub fn start(&self) -> Index<'id, I, Emptiness>
[src]
The starting index. (Accessible if the range is NonEmpty
.)
pub fn end(&self) -> Index<'id, I, Unknown>
[src]
The ending index.
pub fn split_at<E>(
&self,
index: Index<'id, I, E>
) -> Option<(Range<'id, I>, Range<'id, I>)>
[src]
&self,
index: Index<'id, I, E>
) -> Option<(Range<'id, I>, Range<'id, I>)>
Split around the middle index
if it is in this range.
pub fn contains_in<Array: TrustedContainer>(
&self,
index: I,
container: &Container<'id, Array>
) -> Option<Index<'id, I, NonEmpty>>
[src]
&self,
index: I,
container: &Container<'id, Array>
) -> Option<Index<'id, I, NonEmpty>>
If the index is a valid absolute index within this range.
pub fn contains<P>(
&self,
index: Index<'id, I, P>
) -> Option<Index<'id, I, NonEmpty>>
[src]
&self,
index: Index<'id, I, P>
) -> Option<Index<'id, I, NonEmpty>>
If the index is within this range. Provides a nonempty proof.
pub fn join<Q>(
&self,
other: Range<'id, I, Q>
) -> Option<Range<'id, I, <(Emptiness, Q) as ProofAdd>::Sum>> where
(Emptiness, Q): ProofAdd,
[src]
&self,
other: Range<'id, I, Q>
) -> Option<Range<'id, I, <(Emptiness, Q) as ProofAdd>::Sum>> where
(Emptiness, Q): ProofAdd,
Join together two adjacent ranges. (They must be exactly touching, non-overlapping, and in order.)
pub fn join_cover<Q>(
&self,
other: Range<'id, I, Q>
) -> Range<'id, I, <(Emptiness, Q) as ProofAdd>::Sum> where
(Emptiness, Q): ProofAdd,
[src]
&self,
other: Range<'id, I, Q>
) -> Range<'id, I, <(Emptiness, Q) as ProofAdd>::Sum> where
(Emptiness, Q): ProofAdd,
Extend the range to cover all of other
, including any space between.
pub fn frontiers(&self) -> (Range<'id, I, Unknown>, Range<'id, I, Unknown>)
[src]
Create two empty ranges, at the front and the back of this range.
impl<'id, I: Idx> Range<'id, I, NonEmpty>
[src]
pub fn advance_in<Array: TrustedContainer>(
&mut self,
container: &Container<'id, Array>
) -> bool
[src]
&mut self,
container: &Container<'id, Array>
) -> bool
Increase the range's start, if the result is still a non-empty range.
true
if stepped successfully, false
if the range would be empty.
Trait Implementations
impl<'id, I: Idx, Emptiness> Copy for Range<'id, I, Emptiness>
[src]
impl<'id, I: Idx, Emptiness> Clone for Range<'id, I, Emptiness>
[src]
fn clone(&self) -> Self
[src]
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl<'id, I: Idx, Emptiness> From<Range<Index<'id, I, Emptiness>>> for Range<'id, I, Unknown>
[src]
Note
In order to use this impl, you'll likely need to erase the emptiness proof
from the indices to create the range. This doesn't lose any Range
proof.
impl<'id, I: Idx, Emptiness> Debug for Range<'id, I, Emptiness>
[src]
impl<'id, I: Idx, P, Q> PartialEq<Range<'id, I, Q>> for Range<'id, I, P>
[src]
fn eq(&self, other: &Range<'id, I, Q>) -> bool
[src]
#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]
This method tests for !=
.
impl<'id, I: Idx, Emptiness> Eq for Range<'id, I, Emptiness>
[src]
impl<'id, Array: TrustedContainer + ?Sized, I: Idx, P> Index<Range<'id, I, P>> for Container<'id, Array>
[src]
type Output = Array::Slice
The returned type after indexing.
fn index(&self, r: Range<'id, I, P>) -> &Self::Output
[src]
impl<'id, I: Idx, Emptiness> Hash for Range<'id, I, Emptiness>
[src]
Auto Trait Implementations
impl<'id, I, Emptiness> Send for Range<'id, I, Emptiness> where
Emptiness: Send,
I: Send,
Emptiness: Send,
I: Send,
impl<'id, I, Emptiness> Sync for Range<'id, I, Emptiness> where
Emptiness: Sync,
I: Sync,
Emptiness: Sync,
I: Sync,
Blanket Implementations
impl<'_, T, Array> TrustedItem<&'_ Array> for T where
Array: TrustedContainer<Item = T> + ?Sized,
T: TrustedItem<Array> + ?Sized,
[src]
Array: TrustedContainer<Item = T> + ?Sized,
T: TrustedItem<Array> + ?Sized,
type Unit = <T as TrustedItem<Array>>::Unit
fn vet<I>(
I,
&Container<'id, &Array>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
[src]
I,
&Container<'id, &Array>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
fn after<I>(
Index<'id, I, NonEmpty>,
&Container<'id, &Array>
) -> Index<'id, I, Unknown> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, &Array>
) -> Index<'id, I, Unknown> where
I: Idx,
fn advance<I>(
Index<'id, I, NonEmpty>,
&Container<'id, &Array>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, &Array>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
impl<T> TrustedItem<[T]> for T
[src]
type Unit = T
fn vet<I>(I, &Container<'id, [T]>) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
[src]
I: Idx,
fn after<I>(
Index<'id, I, NonEmpty>,
&Container<'id, [T]>
) -> Index<'id, I, Unknown> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, [T]>
) -> Index<'id, I, Unknown> where
I: Idx,
fn advance<I>(
Index<'id, I, NonEmpty>,
&Container<'id, [T]>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, [T]>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
impl<T, Array> TrustedItem<Box<Array>> for T where
Array: TrustedContainer<Item = T> + ?Sized,
T: TrustedItem<Array> + ?Sized,
[src]
Array: TrustedContainer<Item = T> + ?Sized,
T: TrustedItem<Array> + ?Sized,
type Unit = <T as TrustedItem<Array>>::Unit
fn vet<I>(
I,
&Container<'id, Box<Array>>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
[src]
I,
&Container<'id, Box<Array>>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
fn after<I>(
Index<'id, I, NonEmpty>,
&Container<'id, Box<Array>>
) -> Index<'id, I, Unknown> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, Box<Array>>
) -> Index<'id, I, Unknown> where
I: Idx,
fn advance<I>(
Index<'id, I, NonEmpty>,
&Container<'id, Box<Array>>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, Box<Array>>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
impl<T> TrustedItem<Vec<T>> for T where
T: TrustedItem<[T]>,
[src]
T: TrustedItem<[T]>,
type Unit = <T as TrustedItem<[T]>>::Unit
fn vet<I>(
I,
&Container<'id, Vec<T>>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
[src]
I,
&Container<'id, Vec<T>>
) -> Result<Index<'id, I, Unknown>, IndexError> where
I: Idx,
fn after<I>(
Index<'id, I, NonEmpty>,
&Container<'id, Vec<T>>
) -> Index<'id, I, Unknown> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, Vec<T>>
) -> Index<'id, I, Unknown> where
I: Idx,
fn advance<I>(
Index<'id, I, NonEmpty>,
&Container<'id, Vec<T>>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
[src]
Index<'id, I, NonEmpty>,
&Container<'id, Vec<T>>
) -> Option<Index<'id, I, NonEmpty>> where
I: Idx,
impl<T> From<T> for T
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,