Sources

Struct Sources 

Source
pub struct Sources<'ast> { /* private fields */ }
Expand description

Sources.

Implementations§

Source§

impl<'ast> Sources<'ast>

Source

pub fn new() -> Sources<'ast>

Creates a new empty list of parsed sources.

Source

pub fn get(&self, id: SourceId) -> Option<&Source<'ast>>

Returns a reference to the source, if it exists.

Source

pub fn get_mut(&mut self, id: SourceId) -> Option<&mut Source<'ast>>

Returns a mutable reference to the source, if it exists.

Source

pub fn get_file( &self, file: &Arc<SourceFile>, ) -> Option<(SourceId, &Source<'ast>)>

Returns the ID of the source file, if it exists.

Source

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.

Source

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.

Source

pub fn remove_file(&mut self, file: &Arc<SourceFile>) -> Option<Source<'ast>>

Removes the given file from the sources.

Source

pub fn asts(&self) -> impl DoubleEndedIterator

Returns an iterator over all the ASTs.

Source

pub fn par_asts(&self) -> impl ParallelIterator<Item = &SourceUnit<'ast>>

Returns a parallel iterator over all the ASTs.

Source

pub fn topo_sort(&mut self)

Methods from Deref<Target = IndexVec<SourceId, Source<'ast>>>§

Source

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

Source

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.

Source

pub fn next_idx(&self) -> I

Gives the next index that will be assigned when push is called.

Source

pub fn as_raw_slice(&self) -> &[T]

Get a the storage as a &[T]

Source

pub fn as_raw_slice_mut(&mut self) -> &mut [T]

Get a the storage as a &mut [T]

Source

pub fn as_vec(&self) -> &Vec<T>

Equivalent to accessing our raw field, but as a function.

Source

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.

Source

pub fn push(&mut self, d: T) -> I

Push a new item onto the vector, and return it’s index.

Source

pub fn pop(&mut self) -> Option<T>

Pops the last item off, returning it. See Vec::pop.

Source

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.

Source

pub fn shrink_to_fit(&mut self)

Shrinks the capacity of the vector as much as possible.

Source

pub fn truncate(&mut self, a: usize)

Shortens the vector, keeping the first len elements and dropping the rest. See Vec::truncate

Source

pub fn clear(&mut self)

Clear our vector. See Vec::clear.

Source

pub fn reserve(&mut self, c: usize)

Reserve capacity for c more elements. See Vec::reserve

Source

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.

Source

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

Source

pub fn resize(&mut self, new_len: usize, value: T)
where T: Clone,

Resize ourselves in-place to new_len. See Vec::resize.

Source

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.

Source

pub fn append(&mut self, other: &mut IndexVec<I, T>)

Moves all the elements of other into Self, leaving other empty. See Vec::append.

Source

pub fn split_off(&mut self, idx: I) -> IndexVec<I, T>

Splits the collection into two at the given index. See Vec::split_off.

Source

pub fn remove(&mut self, index: I) -> T

Remove the item at index. See Vec::remove.

Source

pub fn swap_remove(&mut self, index: I) -> T

Remove the item at index without maintaining order. See Vec::swap_remove.

Source

pub fn insert(&mut self, index: I, element: T)

Insert an item at index. See Vec::insert.

Source

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.

See Vec::extend_from_slice.

Source

pub fn retain<F>(&mut self, f: F)
where F: FnMut(&T) -> bool,

Forwards to the Vec::retain implementation.

Source

pub fn dedup_by_key<F, K>(&mut self, key: F)
where F: FnMut(&mut T) -> K, K: PartialEq,

Forwards to the Vec::dedup_by_key implementation.

Source

pub fn dedup(&mut self)
where T: PartialEq,

Forwards to the Vec::dedup implementation.

Source

pub fn dedup_by<F>(&mut self, same_bucket: F)
where F: FnMut(&mut T, &mut T) -> bool,

Forwards to the Vec::dedup_by implementation.

Source

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).

Source

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]>>§

Source

pub fn to_vec(&self) -> IndexVec<I, T>
where T: Clone,

Copies self into a new IndexVec.

Source

pub fn as_raw_slice_mut(&mut self) -> &mut [T]

Returns the underlying slice.

Source

pub fn as_raw_slice(&self) -> &[T]

Returns the underlying slice.

Source

pub fn as_mut_ptr(&mut self) -> *mut T

Returns an unsafe mutable pointer to the slice’s buffer.

Source

pub fn as_ptr(&self) -> *const T

Returns an unsafe pointer to the slice’s buffer.

Source

pub fn last_idx(&self) -> I

Return the index of the last element, or panic.

Source

pub fn len(&self) -> usize

Returns the length of our slice.

Source

pub fn len_idx(&self) -> I

Returns the length of our slice as an I.

Source

pub fn is_empty(&self) -> bool

Returns true if we’re empty.

Source

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.

Source

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.

Source

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.

Source

pub fn indices(&self) -> Map<Range<usize>, fn(usize) -> I>

Get an interator over all our indices.

Source

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.

Source

pub fn sort(&mut self)
where T: Ord,

Forwards to the slice’s sort implementation.

Source

pub fn sort_by<F>(&mut self, compare: F)
where F: FnMut(&T, &T) -> Ordering,

Forwards to the slice’s sort_by implementation.

Source

pub fn sort_by_key<F, K>(&mut self, f: F)
where F: FnMut(&T) -> K, K: Ord,

Forwards to the slice’s sort_by_key implementation.

Source

pub fn sort_by_cached_key<F, K>(&mut self, f: F)
where F: FnMut(&T) -> K, K: Ord,

Forwards to the slice’s sort_by_cached_key implementation.

Source

pub fn sort_unstable(&mut self)
where T: Ord,

Forwards to the slice’s sort_unstable implementation.

Source

pub fn sort_unstable_by<F>(&mut self, compare: F)
where F: FnMut(&T, &T) -> Ordering,

Forwards to the slice’s sort_unstable_by implementation.

Source

pub fn sort_unstable_by_key<F, K>(&mut self, f: F)
where F: FnMut(&T) -> K, K: Ord,

Forwards to the slice’s sort_unstable_by_key implementation.

Source

pub fn ends_with<S>(&self, needle: &S) -> bool
where S: AsRef<[T]> + ?Sized, T: PartialEq,

Forwards to the slice’s ends_with implementation.

Source

pub fn starts_with<S>(&self, needle: &S) -> bool
where S: AsRef<[T]> + ?Sized, T: PartialEq,

Forwards to the slice’s starts_with implementation.

Source

pub fn contains(&self, x: &T) -> bool
where T: PartialEq,

Forwards to the slice’s contains implementation.

Source

pub fn reverse(&mut self)

Forwards to the slice’s reverse implementation.

Call slice::binary_search converting the indices it gives us back as needed.

Source

pub fn binary_search_by<'a, F>(&'a self, f: F) -> Result<I, I>
where F: FnMut(&'a T) -> Ordering,

Binary searches this sorted vec with a comparator function, converting the indices it gives us back to our Idx type.

Source

pub fn copy_from_slice(&mut self, src: &IndexSlice<I, [T]>)
where T: Copy,

Copies all elements from src into self, using a memcpy.

Source

pub fn clone_from_slice(&mut self, src: &IndexSlice<I, [T]>)
where T: Clone,

Copies the elements from src into self.

Source

pub fn swap_with_slice(&mut self, other: &mut IndexSlice<I, [T]>)

Swaps all elements in self with those in other.

Source

pub fn binary_search_by_key<'a, B, F>(&'a self, b: &B, f: F) -> Result<I, I>
where B: Ord, F: FnMut(&'a T) -> B,

Binary searches this sorted vec with a key extraction function, converting the indices it gives us back to our Idx type.

Source

pub fn position<F>(&self, f: F) -> Option<I>
where F: FnMut(&T) -> bool,

Searches for an element in an iterator, returning its index. This is equivalent to Iterator::position, but returns I and not usize.

Source

pub fn rposition<F>(&self, f: F) -> Option<I>
where F: FnMut(&T) -> bool,

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.

Source

pub fn swap(&mut self, a: I, b: I)

Swaps two elements in our vector.

Source

pub fn split_at(&self, a: I) -> (&IndexSlice<I, [T]>, &IndexSlice<I, [T]>)

Divides our slice into two at an index.

Source

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.

Source

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

Source

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

Source

pub fn last(&self) -> Option<&T>

Return the the last element, if we are not empty.

Source

pub fn last_mut(&mut self) -> Option<&mut T>

Return the the last element, if we are not empty.

Source

pub fn first(&self) -> Option<&T>

Return the the first element, if we are not empty.

Source

pub fn first_mut(&mut self) -> Option<&mut T>

Return the the first element, if we are not empty.

Source

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.

Source

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.

Source

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

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn split<F>( &self, f: F, ) -> Map<Split<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s split iterator with one that yields IndexSlices with the correct index type.

Source

pub fn split_mut<F>( &mut self, f: F, ) -> Map<SplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s split_mut iterator with one that yields IndexSlices with the correct index type.

Source

pub fn rsplit<F>( &self, f: F, ) -> Map<RSplit<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s rsplit iterator with one that yields IndexSlices with the correct index type.

Source

pub fn rsplit_mut<F>( &mut self, f: F, ) -> Map<RSplitMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s rsplit_mut iterator with one that yields IndexSlices with the correct index type.

Source

pub fn splitn<F>( &self, n: usize, f: F, ) -> Map<SplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s splitn iterator with one that yields IndexSlices with the correct index type.

Source

pub fn splitn_mut<F>( &mut self, n: usize, f: F, ) -> Map<SplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s splitn_mut iterator with one that yields IndexSlices with the correct index type.

Source

pub fn rsplitn<F>( &self, n: usize, f: F, ) -> Map<RSplitN<'_, T, F>, fn(&[T]) -> &IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s rsplitn iterator with one that yields IndexSlices with the correct index type.

Source

pub fn rsplitn_mut<F>( &mut self, n: usize, f: F, ) -> Map<RSplitNMut<'_, T, F>, fn(&mut [T]) -> &mut IndexSlice<I, [T]>>
where F: FnMut(&T) -> bool,

Wraps the underlying slice’s rsplitn_mut iterator with one that yields IndexSlices with the correct index type.

Source

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.

Source

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.

Source

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.

Source

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§

Source§

impl Debug for Sources<'_>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl<'ast> Default for Sources<'ast>

Source§

fn default() -> Sources<'ast>

Returns the “default value” for a type. Read more
Source§

impl<'ast> Deref for Sources<'ast>

Source§

type Target = IndexVec<SourceId, Source<'ast>>

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<Sources<'ast> as Deref>::Target

Dereferences the value.
Source§

impl DerefMut for Sources<'_>

Source§

fn deref_mut(&mut self) -> &mut <Sources<'_> as Deref>::Target

Mutably dereferences the value.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, R> CollectAndApply<T, R> for T

Source§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

Source§

type Output = R

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more