Enum rustc_infer::infer::NllRegionVariableOrigin
source · [−]pub enum NllRegionVariableOrigin {
FreeRegion,
Placeholder(PlaceholderRegion),
Existential {
from_forall: bool,
},
}
Variants
FreeRegion
During NLL region processing, we create variables for free regions that we encounter in the function signature and elsewhere. This origin indices we’ve got one of those.
Placeholder(PlaceholderRegion)
“Universal” instantiation of a higher-ranked region (e.g.,
from a for<'a> T
binder). Meant to represent “any region”.
Existential
Fields
from_forall: bool
If this is true, then this variable was created to represent a lifetime
bound in a for
binder. For example, it might have been created to
represent the lifetime 'a
in a type like for<'a> fn(&'a u32)
.
Such variables are created when we are trying to figure out if there
is any valid instantiation of 'a
that could fit into some scenario.
This is used to inform error reporting: in the case that we are trying to
determine whether there is any valid instantiation of a 'a
variable that meets
some constraint C, we want to blame the “source” of that for
type,
rather than blaming the source of the constraint C.
Trait Implementations
sourceimpl Clone for NllRegionVariableOrigin
impl Clone for NllRegionVariableOrigin
sourcefn clone(&self) -> NllRegionVariableOrigin
fn clone(&self) -> NllRegionVariableOrigin
1.0.0 · sourcefn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresourceimpl Debug for NllRegionVariableOrigin
impl Debug for NllRegionVariableOrigin
impl Copy for NllRegionVariableOrigin
Auto Trait Implementations
impl RefUnwindSafe for NllRegionVariableOrigin
impl Send for NllRegionVariableOrigin
impl Sync for NllRegionVariableOrigin
impl Unpin for NllRegionVariableOrigin
impl UnwindSafe for NllRegionVariableOrigin
Blanket Implementations
sourceimpl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'a Arena<'tcx>) -> &'a mut T
fn allocate_from_iter(
arena: &'a Arena<'tcx>,
iter: impl IntoIterator<Item = T>
) -> &'a mut [T]ⓘNotable traits for &[u8]impl Read for &[u8]impl Write for &mut [u8]
sourceimpl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<'a, T> Captures<'a> for Twhere
T: ?Sized,
Layout
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...)
attributes. Please see the Rust Reference’s “Type Layout” chapter for details on type layout guarantees.
Size: 16 bytes
Size for each variant:
FreeRegion
: 0 bytesPlaceholder
: 16 bytesExistential
: 5 bytes