pub struct Sources<'ast> { /* private fields */ }Expand description
Sources.
Implementations§
Source§impl<'ast> Sources<'ast>
impl<'ast> Sources<'ast>
Sourcepub fn get(&self, id: SourceId) -> Option<&Source<'ast>>
pub fn get(&self, id: SourceId) -> Option<&Source<'ast>>
Returns a reference to the source, if it exists.
Sourcepub fn get_mut(&mut self, id: SourceId) -> Option<&mut Source<'ast>>
pub fn get_mut(&mut self, id: SourceId) -> Option<&mut Source<'ast>>
Returns a mutable reference to the source, if it exists.
Sourcepub fn get_file(
&self,
file: &Arc<SourceFile>,
) -> Option<(SourceId, &Source<'ast>)>
pub fn get_file( &self, file: &Arc<SourceFile>, ) -> Option<(SourceId, &Source<'ast>)>
Returns the ID of the source file, if it exists.
Sourcepub fn get_file_mut(
&mut self,
file: &Arc<SourceFile>,
) -> Option<(SourceId, &mut Source<'ast>)>
pub fn get_file_mut( &mut self, file: &Arc<SourceFile>, ) -> Option<(SourceId, &mut Source<'ast>)>
Returns the ID of the source file, if it exists.
Sourcepub fn get_or_insert_file(&mut self, file: Arc<SourceFile>) -> (SourceId, bool)
pub fn get_or_insert_file(&mut self, file: Arc<SourceFile>) -> (SourceId, bool)
Returns the ID of the given file, or inserts it if it doesn’t exist.
Returns true if the file was newly inserted.
Sourcepub fn remove_file(&mut self, file: &Arc<SourceFile>) -> Option<Source<'ast>>
pub fn remove_file(&mut self, file: &Arc<SourceFile>) -> Option<Source<'ast>>
Removes the given file from the sources.
Sourcepub fn asts(&self) -> impl DoubleEndedIterator<Item = &SourceUnit<'ast>>
pub fn asts(&self) -> impl DoubleEndedIterator<Item = &SourceUnit<'ast>>
Returns an iterator over all the ASTs.
Sourcepub fn par_asts(&self) -> impl ParallelIterator<Item = &SourceUnit<'ast>>
pub fn par_asts(&self) -> impl ParallelIterator<Item = &SourceUnit<'ast>>
Returns a parallel iterator over all the ASTs.
Methods from Deref<Target = IndexVec<SourceId, Source<'ast>>>§
Sourcepub fn splice<R, It>(
&mut self,
range: R,
replace_with: It,
) -> Splice<'_, <It as IntoIterator>::IntoIter>where
It: IntoIterator<Item = T>,
R: IdxRangeBounds<I>,
pub fn splice<R, It>(
&mut self,
range: R,
replace_with: It,
) -> Splice<'_, <It as IntoIterator>::IntoIter>where
It: IntoIterator<Item = T>,
R: IdxRangeBounds<I>,
Creates a splicing iterator that replaces the specified range in the
vector with the given replace_with iterator and yields the removed
items. See Vec::splice
Sourcepub fn drain_enumerated<R>(
&mut self,
range: R,
) -> Map<Enumerate<Drain<'_, T>>, fn((usize, T)) -> (I, T)>where
R: IdxRangeBounds<I>,
pub fn drain_enumerated<R>(
&mut self,
range: R,
) -> Map<Enumerate<Drain<'_, T>>, fn((usize, T)) -> (I, T)>where
R: IdxRangeBounds<I>,
Similar to self.drain(r).enumerate() but with indices of I and not
usize.
Sourcepub fn as_raw_slice(&self) -> &[T]
pub fn as_raw_slice(&self) -> &[T]
Get a the storage as a &[T]
Sourcepub fn as_raw_slice_mut(&mut self) -> &mut [T]
pub fn as_raw_slice_mut(&mut self) -> &mut [T]
Get a the storage as a &mut [T]
Sourcepub fn as_mut_vec(&mut self) -> &mut Vec<T>
pub fn as_mut_vec(&mut self) -> &mut Vec<T>
Equivalent to accessing our raw field mutably, but as a function, if
that’s what you’d prefer.
Sourcepub fn drain<R>(&mut self, range: R) -> Drain<'_, T>where
R: IdxRangeBounds<I>,
pub fn drain<R>(&mut self, range: R) -> Drain<'_, T>where
R: IdxRangeBounds<I>,
Return an iterator that removes the items from the requested range. See
Vec::drain.
See also IndexVec::drain_enumerated, which gives you indices (of the
correct type) as you iterate.
Sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Shrinks the capacity of the vector as much as possible.
Sourcepub fn truncate(&mut self, a: usize)
pub fn truncate(&mut self, a: usize)
Shortens the vector, keeping the first len elements and dropping
the rest. See Vec::truncate
Sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Clear our vector. See Vec::clear.
Sourcepub fn reserve(&mut self, c: usize)
pub fn reserve(&mut self, c: usize)
Reserve capacity for c more elements. See Vec::reserve
Sourcepub fn get<J>(&self, index: J) -> Option<&<J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
pub fn get<J>(&self, index: J) -> Option<&<J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
Get a ref to the item at the provided index, or None for out of bounds.
Sourcepub fn get_mut<J>(
&mut self,
index: J,
) -> Option<&mut <J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
pub fn get_mut<J>(
&mut self,
index: J,
) -> Option<&mut <J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
Get a mut ref to the item at the provided index, or None for out of bounds
Sourcepub fn resize(&mut self, new_len: usize, value: T)where
T: Clone,
pub fn resize(&mut self, new_len: usize, value: T)where
T: Clone,
Resize ourselves in-place to new_len. See Vec::resize.
Sourcepub fn resize_with<F>(&mut self, new_len: usize, f: F)where
F: FnMut() -> T,
pub fn resize_with<F>(&mut self, new_len: usize, f: F)where
F: FnMut() -> T,
Resize ourselves in-place to new_len. See Vec::resize_with.
Sourcepub fn append(&mut self, other: &mut IndexVec<I, T>)
pub fn append(&mut self, other: &mut IndexVec<I, T>)
Moves all the elements of other into Self, leaving other empty.
See Vec::append.
Sourcepub fn split_off(&mut self, idx: I) -> IndexVec<I, T>
pub fn split_off(&mut self, idx: I) -> IndexVec<I, T>
Splits the collection into two at the given index. See
Vec::split_off.
Sourcepub fn remove(&mut self, index: I) -> T
pub fn remove(&mut self, index: I) -> T
Remove the item at index. See Vec::remove.
Sourcepub fn swap_remove(&mut self, index: I) -> T
pub fn swap_remove(&mut self, index: I) -> T
Remove the item at index without maintaining order. See
Vec::swap_remove.
Sourcepub fn insert(&mut self, index: I, element: T)
pub fn insert(&mut self, index: I, element: T)
Insert an item at index. See Vec::insert.
Sourcepub fn extend_from_slice(&mut self, other: &IndexSlice<I, [T]>)where
T: Clone,
pub fn extend_from_slice(&mut self, other: &IndexSlice<I, [T]>)where
T: Clone,
Append all items in the slice to the end of our vector.
Sourcepub fn dedup_by_key<F, K>(&mut self, key: F)
pub fn dedup_by_key<F, K>(&mut self, key: F)
Forwards to the Vec::dedup_by_key implementation.
Sourcepub fn as_slice(&self) -> &IndexSlice<I, [T]>
pub fn as_slice(&self) -> &IndexSlice<I, [T]>
Get a IndexSlice over this vector. See as_raw_slice for converting to
a &[T] (or access self.raw).
Sourcepub fn as_mut_slice(&mut self) -> &mut IndexSlice<I, [T]>
pub fn as_mut_slice(&mut self) -> &mut IndexSlice<I, [T]>
Get a mutable IndexSlice over this vector. See as_raw_slice_mut for
converting to a &mut [T] (or access self.raw).
Methods from Deref<Target = IndexSlice<I, [A]>>§
Sourcepub fn as_raw_slice_mut(&mut self) -> &mut [T]
pub fn as_raw_slice_mut(&mut self) -> &mut [T]
Returns the underlying slice.
Sourcepub fn as_raw_slice(&self) -> &[T]
pub fn as_raw_slice(&self) -> &[T]
Returns the underlying slice.
Sourcepub fn as_mut_ptr(&mut self) -> *mut T
pub fn as_mut_ptr(&mut self) -> *mut T
Returns an unsafe mutable pointer to the slice’s buffer.
Sourcepub fn iter(&self) -> Iter<'_, T>
pub fn iter(&self) -> Iter<'_, T>
Get a iterator over reverences to our values.
See also IndexSlice::iter_enumerated, which gives you indices (of the
correct type) as you iterate.
Sourcepub fn iter_mut(&mut self) -> IterMut<'_, T>
pub fn iter_mut(&mut self) -> IterMut<'_, T>
Get a iterator over mut reverences to our values.
See also IndexSlice::iter_mut_enumerated, which gives you indices (of
the correct type) as you iterate.
Sourcepub fn iter_enumerated(
&self,
) -> Map<Enumerate<Iter<'_, T>>, fn((usize, &T)) -> (I, &T)>
pub fn iter_enumerated( &self, ) -> Map<Enumerate<Iter<'_, T>>, fn((usize, &T)) -> (I, &T)>
Similar to self.iter().enumerate() but with indices of I and not
usize.
Sourcepub fn indices(&self) -> Map<Range<usize>, fn(usize) -> I>
pub fn indices(&self) -> Map<Range<usize>, fn(usize) -> I>
Get an interator over all our indices.
Sourcepub fn iter_mut_enumerated(
&mut self,
) -> Map<Enumerate<IterMut<'_, T>>, fn((usize, &mut T)) -> (I, &mut T)>
pub fn iter_mut_enumerated( &mut self, ) -> Map<Enumerate<IterMut<'_, T>>, fn((usize, &mut T)) -> (I, &mut T)>
Similar to self.iter_mut().enumerate() but with indices of I and not
usize.
Sourcepub fn sort_by_key<F, K>(&mut self, f: F)
pub fn sort_by_key<F, K>(&mut self, f: F)
Forwards to the slice’s sort_by_key implementation.
Sourcepub fn sort_by_cached_key<F, K>(&mut self, f: F)
pub fn sort_by_cached_key<F, K>(&mut self, f: F)
Forwards to the slice’s sort_by_cached_key implementation.
Sourcepub fn sort_unstable(&mut self)where
T: Ord,
pub fn sort_unstable(&mut self)where
T: Ord,
Forwards to the slice’s sort_unstable implementation.
Sourcepub fn sort_unstable_by<F>(&mut self, compare: F)
pub fn sort_unstable_by<F>(&mut self, compare: F)
Forwards to the slice’s sort_unstable_by implementation.
Sourcepub fn sort_unstable_by_key<F, K>(&mut self, f: F)
pub fn sort_unstable_by_key<F, K>(&mut self, f: F)
Forwards to the slice’s sort_unstable_by_key implementation.
Sourcepub fn ends_with<S>(&self, needle: &S) -> bool
pub fn ends_with<S>(&self, needle: &S) -> bool
Forwards to the slice’s ends_with implementation.
Sourcepub fn starts_with<S>(&self, needle: &S) -> bool
pub fn starts_with<S>(&self, needle: &S) -> bool
Forwards to the slice’s starts_with implementation.
Sourcepub fn contains(&self, x: &T) -> boolwhere
T: PartialEq,
pub fn contains(&self, x: &T) -> boolwhere
T: PartialEq,
Forwards to the slice’s contains implementation.
Sourcepub fn binary_search(&self, value: &T) -> Result<I, I>where
T: Ord,
pub fn binary_search(&self, value: &T) -> Result<I, I>where
T: Ord,
Call slice::binary_search converting the indices it gives us back as
needed.
Sourcepub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<I, I>
pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<I, I>
Binary searches this sorted vec with a comparator function, converting the indices it gives us back to our Idx type.
Sourcepub fn copy_from_slice(&mut self, src: &IndexSlice<I, [T]>)where
T: Copy,
pub fn copy_from_slice(&mut self, src: &IndexSlice<I, [T]>)where
T: Copy,
Copies all elements from src into self, using a memcpy.
Sourcepub fn clone_from_slice(&mut self, src: &IndexSlice<I, [T]>)where
T: Clone,
pub fn clone_from_slice(&mut self, src: &IndexSlice<I, [T]>)where
T: Clone,
Copies the elements from src into self.
Sourcepub fn swap_with_slice(&mut self, other: &mut IndexSlice<I, [T]>)
pub fn swap_with_slice(&mut self, other: &mut IndexSlice<I, [T]>)
Swaps all elements in self with those in other.
Sourcepub fn binary_search_by_key<'a, B, F>(&'a self, b: &B, f: F) -> Result<I, I>
pub fn binary_search_by_key<'a, B, F>(&'a self, b: &B, f: F) -> Result<I, I>
Binary searches this sorted vec with a key extraction function, converting the indices it gives us back to our Idx type.
Sourcepub fn position<F>(&self, f: F) -> Option<I>
pub fn position<F>(&self, f: F) -> Option<I>
Searches for an element in an iterator, returning its index. This is
equivalent to Iterator::position, but returns I and not usize.
Sourcepub fn rposition<F>(&self, f: F) -> Option<I>
pub fn rposition<F>(&self, f: F) -> Option<I>
Searches for an element in an iterator from the right, returning its
index. This is equivalent to Iterator::position, but returns I and
not usize.
Sourcepub fn split_at(&self, a: I) -> (&IndexSlice<I, [T]>, &IndexSlice<I, [T]>)
pub fn split_at(&self, a: I) -> (&IndexSlice<I, [T]>, &IndexSlice<I, [T]>)
Divides our slice into two at an index.
Sourcepub fn split_at_mut(
&mut self,
a: I,
) -> (&mut IndexSlice<I, [T]>, &mut IndexSlice<I, [T]>)
pub fn split_at_mut( &mut self, a: I, ) -> (&mut IndexSlice<I, [T]>, &mut IndexSlice<I, [T]>)
Divides our slice into two at an index.
Sourcepub fn rotate_left(&mut self, mid: I)
pub fn rotate_left(&mut self, mid: I)
Rotates our data in-place such that the first mid elements of the
slice move to the end while the last self.len() - mid elements move to
the front
Sourcepub fn rotate_right(&mut self, k: I)
pub fn rotate_right(&mut self, k: I)
Rotates our data in-place such that the first self.len() - k elements
of the slice move to the end while the last k elements move to the
front
Sourcepub fn first_mut(&mut self) -> Option<&mut T>
pub fn first_mut(&mut self) -> Option<&mut T>
Return the the first element, if we are not empty.
Sourcepub fn copy_within<R>(&mut self, src: R, dst: I)where
R: IdxRangeBounds<I>,
T: Copy,
pub fn copy_within<R>(&mut self, src: R, dst: I)where
R: IdxRangeBounds<I>,
T: Copy,
Copies elements from one part of the slice to another part of itself, using a memmove.
Sourcepub fn get<J>(&self, index: J) -> Option<&<J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
pub fn get<J>(&self, index: J) -> Option<&<J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
Get a ref to the item at the provided index, or None for out of bounds.
Sourcepub fn get_mut<J>(
&mut self,
index: J,
) -> Option<&mut <J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
pub fn get_mut<J>(
&mut self,
index: J,
) -> Option<&mut <J as IdxSliceIndex<I, T>>::Output>where
J: IdxSliceIndex<I, T>,
Get a mut ref to the item at the provided index, or None for out of bounds
Sourcepub fn windows(
&self,
size: usize,
) -> Map<Windows<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn windows( &self, size: usize, ) -> Map<Windows<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s windows iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn chunks(
&self,
size: usize,
) -> Map<Chunks<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn chunks( &self, size: usize, ) -> Map<Chunks<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s chunks iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn chunks_mut(
&mut self,
size: usize,
) -> Map<ChunksMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn chunks_mut( &mut self, size: usize, ) -> Map<ChunksMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s chunks_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn chunks_exact(
&self,
chunk_size: usize,
) -> Map<ChunksExact<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn chunks_exact( &self, chunk_size: usize, ) -> Map<ChunksExact<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s chunks_exact iterator with one that
yields IndexSlices with the correct index type.
Sourcepub fn chunks_exact_mut(
&mut self,
chunk_size: usize,
) -> Map<ChunksExactMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn chunks_exact_mut( &mut self, chunk_size: usize, ) -> Map<ChunksExactMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s chunks_exact_mut iterator with one that
yields IndexSlices with the correct index type.
Sourcepub fn rchunks(
&self,
size: usize,
) -> Map<RChunks<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn rchunks( &self, size: usize, ) -> Map<RChunks<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s rchunks iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rchunks_mut(
&mut self,
size: usize,
) -> Map<RChunksMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn rchunks_mut( &mut self, size: usize, ) -> Map<RChunksMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s rchunks_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rchunks_exact(
&self,
chunk_size: usize,
) -> Map<RChunksExact<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn rchunks_exact( &self, chunk_size: usize, ) -> Map<RChunksExact<'_, T>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s rchunks_exact iterator with one that
yields IndexSlices with the correct index type.
Sourcepub fn rchunks_exact_mut(
&mut self,
chunk_size: usize,
) -> Map<RChunksExactMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn rchunks_exact_mut( &mut self, chunk_size: usize, ) -> Map<RChunksExactMut<'_, T>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s rchunks_exact_mut iterator with one that
yields IndexSlices with the correct index type.
Sourcepub fn split<F>(
&self,
f: F,
) -> Map<Split<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn split<F>( &self, f: F, ) -> Map<Split<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s split iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn split_mut<F>(
&mut self,
f: F,
) -> Map<SplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn split_mut<F>( &mut self, f: F, ) -> Map<SplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s split_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rsplit<F>(
&self,
f: F,
) -> Map<RSplit<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn rsplit<F>( &self, f: F, ) -> Map<RSplit<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s rsplit iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rsplit_mut<F>(
&mut self,
f: F,
) -> Map<RSplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn rsplit_mut<F>( &mut self, f: F, ) -> Map<RSplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s rsplit_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn splitn<F>(
&self,
n: usize,
f: F,
) -> Map<SplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn splitn<F>( &self, n: usize, f: F, ) -> Map<SplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s splitn iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn splitn_mut<F>(
&mut self,
n: usize,
f: F,
) -> Map<SplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn splitn_mut<F>( &mut self, n: usize, f: F, ) -> Map<SplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s splitn_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rsplitn<F>(
&self,
n: usize,
f: F,
) -> Map<RSplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
pub fn rsplitn<F>( &self, n: usize, f: F, ) -> Map<RSplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
Wraps the underlying slice’s rsplitn iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn rsplitn_mut<F>(
&mut self,
n: usize,
f: F,
) -> Map<RSplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
pub fn rsplitn_mut<F>( &mut self, n: usize, f: F, ) -> Map<RSplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
Wraps the underlying slice’s rsplitn_mut iterator with one that yields
IndexSlices with the correct index type.
Sourcepub fn split_first(&self) -> Option<(&T, &IndexSlice<I, [T]>)>
pub fn split_first(&self) -> Option<(&T, &IndexSlice<I, [T]>)>
Returns the first and all the rest of the elements of the slice, or None if it is empty.
Sourcepub fn split_first_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>
pub fn split_first_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>
Returns the first and all the rest of the elements of the slice, or None if it is empty.
Sourcepub fn split_last(&self) -> Option<(&T, &IndexSlice<I, [T]>)>
pub fn split_last(&self) -> Option<(&T, &IndexSlice<I, [T]>)>
Returns the last and all the rest of the elements of the slice, or None if it is empty.
Sourcepub fn split_last_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>
pub fn split_last_mut(&mut self) -> Option<(&mut T, &mut IndexSlice<I, [T]>)>
Returns the last and all the rest of the elements of the slice, or None if it is empty.
Trait Implementations§
Auto Trait Implementations§
impl<'ast> Freeze for Sources<'ast>
impl<'ast> RefUnwindSafe for Sources<'ast>
impl<'ast> Send for Sources<'ast>
impl<'ast> Sync for Sources<'ast>
impl<'ast> Unpin for Sources<'ast>
impl<'ast> !UnwindSafe for Sources<'ast>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.