pub type EntryStates<'tcx, A> = IndexVec<BasicBlock, <A as Analysis<'tcx>>::Domain>;
Aliased Type§
struct EntryStates<'tcx, A> {
pub raw: Vec<<A as Analysis<'tcx>>::Domain>,
/* private fields */
}
Fields§
§raw: Vec<<A as Analysis<'tcx>>::Domain>
Layout§
Note: Encountered an error during type layout; the type failed to be normalized.
Implementations
Source§impl<I, T> IndexVec<I, Option<T>>where
I: Idx,
IndexVec
is often used as a map, so it provides some map-like APIs.
impl<I, T> IndexVec<I, Option<T>>where
I: Idx,
IndexVec
is often used as a map, so it provides some map-like APIs.
Source§impl<I, T> IndexVec<I, T>where
I: Idx,
impl<I, T> IndexVec<I, T>where
I: Idx,
Sourcepub const fn from_raw(raw: Vec<T>) -> IndexVec<I, T>
pub const fn from_raw(raw: Vec<T>) -> IndexVec<I, T>
Constructs a new IndexVec<I, T>
from a Vec<T>
.
pub fn with_capacity(capacity: usize) -> IndexVec<I, T>
Sourcepub fn from_elem<S>(elem: T, universe: &IndexSlice<I, S>) -> IndexVec<I, T>where
T: Clone,
pub fn from_elem<S>(elem: T, universe: &IndexSlice<I, S>) -> IndexVec<I, T>where
T: Clone,
Creates a new vector with a copy of elem
for each index in universe
.
Thus IndexVec::from_elem(elem, &universe)
is equivalent to
IndexVec::<I, _>::from_elem_n(elem, universe.len())
. That can help
type inference as it ensures that the resulting vector uses the same
index type as universe
, rather than something potentially surprising.
For example, if you want to store data for each local in a MIR body,
using let mut uses = IndexVec::from_elem(vec![], &body.local_decls);
ensures that uses
is an IndexVec<Local, _>
, and thus can give
better error messages later if one accidentally mismatches indices.
Sourcepub fn from_elem_n(elem: T, n: usize) -> IndexVec<I, T>where
T: Clone,
pub fn from_elem_n(elem: T, n: usize) -> IndexVec<I, T>where
T: Clone,
Creates a new IndexVec with n copies of the elem
.
Sourcepub fn from_fn_n(func: impl FnMut(I) -> T, n: usize) -> IndexVec<I, T>
pub fn from_fn_n(func: impl FnMut(I) -> T, n: usize) -> IndexVec<I, T>
Create an IndexVec
with n
elements, where the value of each
element is the result of func(i)
. (The underlying vector will
be allocated only once, with a capacity of at least n
.)
pub fn as_slice(&self) -> &IndexSlice<I, T>
pub fn as_mut_slice(&mut self) -> &mut IndexSlice<I, T>
Sourcepub fn push(&mut self, d: T) -> I
pub fn push(&mut self, d: T) -> I
Pushes an element to the array returning the index where it was pushed to.
pub fn pop(&mut self) -> Option<T>
pub fn into_iter(self) -> IntoIter<T>
pub fn into_iter_enumerated( self, ) -> impl DoubleEndedIterator + ExactSizeIterator
pub fn drain<R>(&mut self, range: R) -> impl Iterator<Item = T>where
R: RangeBounds<usize>,
pub fn drain_enumerated<R>(&mut self, range: R) -> impl Iterator<Item = (I, T)>where
R: RangeBounds<usize>,
pub fn shrink_to_fit(&mut self)
pub fn truncate(&mut self, a: usize)
Sourcepub fn ensure_contains_elem(
&mut self,
elem: I,
fill_value: impl FnMut() -> T,
) -> &mut T
pub fn ensure_contains_elem( &mut self, elem: I, fill_value: impl FnMut() -> T, ) -> &mut T
Grows the index vector so that it contains an entry for
elem
; if that is already true, then has no
effect. Otherwise, inserts new values as needed by invoking
fill_value
.
Returns a reference to the elem
entry.
pub fn resize(&mut self, new_len: usize, value: T)where
T: Clone,
pub fn resize_to_elem(&mut self, elem: I, fill_value: impl FnMut() -> T)
pub fn append(&mut self, other: &mut IndexVec<I, T>)
Trait Implementations
Source§impl<I, T> Borrow<IndexSlice<I, T>> for IndexVec<I, T>where
I: Idx,
impl<I, T> Borrow<IndexSlice<I, T>> for IndexVec<I, T>where
I: Idx,
Source§fn borrow(&self) -> &IndexSlice<I, T>
fn borrow(&self) -> &IndexSlice<I, T>
Source§impl<I, T> BorrowMut<IndexSlice<I, T>> for IndexVec<I, T>where
I: Idx,
impl<I, T> BorrowMut<IndexSlice<I, T>> for IndexVec<I, T>where
I: Idx,
Source§fn borrow_mut(&mut self) -> &mut IndexSlice<I, T>
fn borrow_mut(&mut self) -> &mut IndexSlice<I, T>
Source§impl<I, T> Deref for IndexVec<I, T>where
I: Idx,
impl<I, T> Deref for IndexVec<I, T>where
I: Idx,
Source§type Target = IndexSlice<I, T>
type Target = IndexSlice<I, T>
Source§fn deref(&self) -> &IndexSlice<I, T>
fn deref(&self) -> &IndexSlice<I, T>
Source§impl<I, T> DerefMut for IndexVec<I, T>where
I: Idx,
impl<I, T> DerefMut for IndexVec<I, T>where
I: Idx,
Source§fn deref_mut(&mut self) -> &mut IndexSlice<I, T>
fn deref_mut(&mut self) -> &mut IndexSlice<I, T>
Source§impl<I, T> Extend<T> for IndexVec<I, T>where
I: Idx,
impl<I, T> Extend<T> for IndexVec<I, T>where
I: Idx,
Source§fn extend<J>(&mut self, iter: J)where
J: IntoIterator<Item = T>,
fn extend<J>(&mut self, iter: J)where
J: IntoIterator<Item = T>,
Source§fn extend_one(&mut self, item: T)
fn extend_one(&mut self, item: T)
extend_one
)Source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)Source§impl<I, T> FromIterator<T> for IndexVec<I, T>where
I: Idx,
impl<I, T> FromIterator<T> for IndexVec<I, T>where
I: Idx,
Source§impl<I, T, CTX> HashStable<CTX> for IndexVec<I, T>where
I: Idx,
T: HashStable<CTX>,
impl<I, T, CTX> HashStable<CTX> for IndexVec<I, T>where
I: Idx,
T: HashStable<CTX>,
fn hash_stable(&self, ctx: &mut CTX, hasher: &mut StableHasher<SipHasher128>)
Source§impl<I, T> IntoIterator for IndexVec<I, T>where
I: Idx,
impl<I, T> IntoIterator for IndexVec<I, T>where
I: Idx,
Source§impl<I, T> ParameterizedOverTcx for IndexVec<I, T>where
I: Idx + 'static,
T: ParameterizedOverTcx,
impl<I, T> ParameterizedOverTcx for IndexVec<I, T>where
I: Idx + 'static,
T: ParameterizedOverTcx,
Source§impl<I, T, Ix> TypeFoldable<I> for IndexVec<Ix, T>
impl<I, T, Ix> TypeFoldable<I> for IndexVec<Ix, T>
Source§fn try_fold_with<F>(
self,
folder: &mut F,
) -> Result<IndexVec<Ix, T>, <F as FallibleTypeFolder<I>>::Error>where
F: FallibleTypeFolder<I>,
fn try_fold_with<F>(
self,
folder: &mut F,
) -> Result<IndexVec<Ix, T>, <F as FallibleTypeFolder<I>>::Error>where
F: FallibleTypeFolder<I>,
Source§fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
fn fold_with<F>(self, folder: &mut F) -> Selfwhere
F: TypeFolder<I>,
try_fold_with
for use with infallible
folders. Do not override this method, to ensure coherence with
try_fold_with
.