Struct rustc_mir::borrow_check::region_infer::values::RegionValues [−][src]
Stores the full values for a set of regions (in contrast to
LivenessValues
, which only stores those points in the where a
region is live). The full value for a region may contain points in
the CFG, but also free regions as well as bound universe
placeholders.
Example:
fn foo(x: &'a u32) -> &'a u32 {
let y: &'0 u32 = x; // let's call this `'0`
y
}
Here, the variable '0
would contain the free region 'a
,
because (since it is returned) it must live for at least 'a
. But
it would also contain various points from within the function.
Fields
elements: Rc<RegionValueElements>
placeholder_indices: Rc<PlaceholderIndices>
points: SparseBitMatrix<N, PointIndex>
free_regions: SparseBitMatrix<N, RegionVid>
placeholders: SparseBitMatrix<N, PlaceholderIndex>
Placeholders represent bound regions – so something like 'a
in for<’a> fn(&’a u32)`.
Implementations
impl<N: Idx> RegionValues<N>
[src]
pub(crate) fn new(
elements: &Rc<RegionValueElements>,
num_universal_regions: usize,
placeholder_indices: &Rc<PlaceholderIndices>
) -> Self
[src]
elements: &Rc<RegionValueElements>,
num_universal_regions: usize,
placeholder_indices: &Rc<PlaceholderIndices>
) -> Self
Creates a new set of “region values” that tracks causal information. Each of the regions in num_region_variables will be initialized with an empty set of points and no causal information.
pub(crate) fn add_element(&mut self, r: N, elem: impl ToElementIndex) -> bool
[src]
Adds the given element to the value for the given region. Returns whether the element is newly added (i.e., was not already present).
pub(crate) fn add_all_points(&mut self, r: N)
[src]
Adds all the control-flow points to the values for r
.
pub(crate) fn add_region(&mut self, r_to: N, r_from: N) -> bool
[src]
Adds all elements in r_from
to r_to
(because e.g., r_to: r_from
).
pub(crate) fn contains(&self, r: N, elem: impl ToElementIndex) -> bool
[src]
Returns true
if the region r
contains the given element.
pub(crate) fn merge_liveness<M: Idx>(
&mut self,
to: N,
from: M,
values: &LivenessValues<M>
)
[src]
&mut self,
to: N,
from: M,
values: &LivenessValues<M>
)
self[to] |= values[from]
, essentially: that is, take all the
elements for the region from
from values
and add them to
the region to
in self
.
pub(crate) fn contains_points(&self, sup_region: N, sub_region: N) -> bool
[src]
Returns true
if sup_region
contains all the CFG points that
sub_region
contains. Ignores universal regions.
pub(crate) fn locations_outlived_by<'a>(
&'a self,
r: N
) -> impl Iterator<Item = Location> + 'a
[src]
&'a self,
r: N
) -> impl Iterator<Item = Location> + 'a
Returns the locations contained within a given region r
.
pub(crate) fn universal_regions_outlived_by<'a>(
&'a self,
r: N
) -> impl Iterator<Item = RegionVid> + 'a
[src]
&'a self,
r: N
) -> impl Iterator<Item = RegionVid> + 'a
Returns just the universal regions that are contained in a given region’s value.
pub(crate) fn placeholders_contained_in<'a>(
&'a self,
r: N
) -> impl Iterator<Item = PlaceholderRegion> + 'a
[src]
&'a self,
r: N
) -> impl Iterator<Item = PlaceholderRegion> + 'a
Returns all the elements contained in a given region’s value.
pub(crate) fn elements_contained_in<'a>(
&'a self,
r: N
) -> impl Iterator<Item = RegionElement> + 'a
[src]
&'a self,
r: N
) -> impl Iterator<Item = RegionElement> + 'a
Returns all the elements contained in a given region’s value.
pub(crate) fn region_value_str(&self, r: N) -> String
[src]
Returns a “pretty” string value of the region. Meant for debugging.
Trait Implementations
impl<N: Clone + Idx> Clone for RegionValues<N>
[src]
fn clone(&self) -> RegionValues<N>
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
Auto Trait Implementations
impl<N> !RefUnwindSafe for RegionValues<N>
impl<N> !Send for RegionValues<N>
impl<N> !Sync for RegionValues<N>
impl<N> Unpin for RegionValues<N>
impl<N> UnwindSafe for RegionValues<N>
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut 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.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
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.