Struct rustc::middle::typeck::infer::region_inference::RegionVarBindings[src]

pub struct RegionVarBindings<'a> {
    // some fields omitted
}

Methods

impl<'a> RegionVarBindings<'a>

fn new(tcx: &'a ctxt) -> RegionVarBindings<'a>

fn in_snapshot(&self) -> bool

fn start_snapshot(&self) -> RegionSnapshot

fn mark(&self) -> RegionMark

fn commit(&self, snapshot: RegionSnapshot)

fn rollback_to(&self, snapshot: RegionSnapshot)

fn num_vars(&self) -> uint

fn new_region_var(&self, origin: RegionVariableOrigin) -> RegionVid

fn new_skolemized(&self, br: BoundRegion) -> Region

fn new_bound(&self, binder_id: NodeId) -> Region

fn add_constraint(&self, constraint: Constraint, origin: SubregionOrigin)

fn make_subregion(&self, origin: SubregionOrigin, sub: Region, sup: Region)

fn lub_regions(&self, origin: SubregionOrigin, a: Region, b: Region) -> Region

fn glb_regions(&self, origin: SubregionOrigin, a: Region, b: Region) -> Region

fn resolve_var(&self, rid: RegionVid) -> Region

fn combine_vars(&self, t: CombineMapType, a: Region, b: Region, origin: SubregionOrigin, relate: |this: &RegionVarBindings, old_r: Region, new_r: Region|) -> Region

fn vars_created_since_mark(&self, mark: RegionMark) -> Vec<RegionVid>

fn tainted(&self, mark: RegionMark, r0: Region) -> Vec<Region>

Computes all regions that have been related to r0 in any way since the mark mark was made---r0 itself will be the first entry. This is used when checking whether skolemized regions are being improperly related to other regions.

fn resolve_regions(&self) -> Vec<RegionResolutionError>

This function performs the actual region resolution. It must be called after all constraints have been added. It performs a fixed-point iteration to find region values which satisfy all constraints, assuming such values can be found; if they cannot, errors are reported.