Struct rustc_type_ir::TypeFlags [−][src]
pub struct TypeFlags {
bits: u32,
}Expand description
Flags that we track on types. These flags are propagated upwards through the type during type construction, so that we can quickly check whether the type has various kinds of types in it without recursing over the type itself.
Fields
bits: u32Implementations
impl TypeFlags[src]
impl TypeFlags[src]pub const HAS_TY_PARAM: TypeFlags[src]
pub const HAS_TY_PARAM: TypeFlags[src]Does this have Param?
pub const HAS_RE_PARAM: TypeFlags[src]
pub const HAS_RE_PARAM: TypeFlags[src]Does this have ReEarlyBound?
pub const HAS_CT_PARAM: TypeFlags[src]
pub const HAS_CT_PARAM: TypeFlags[src]Does this have ConstKind::Param?
pub const NEEDS_SUBST: TypeFlags[src]
pub const HAS_TY_INFER: TypeFlags[src]
pub const HAS_TY_INFER: TypeFlags[src]Does this have Infer?
pub const HAS_RE_INFER: TypeFlags[src]
pub const HAS_RE_INFER: TypeFlags[src]Does this have ReVar?
pub const HAS_CT_INFER: TypeFlags[src]
pub const HAS_CT_INFER: TypeFlags[src]Does this have ConstKind::Infer?
pub const NEEDS_INFER: TypeFlags[src]
pub const NEEDS_INFER: TypeFlags[src]Does this have inference variables? Used to determine whether inference is required.
pub const HAS_TY_PLACEHOLDER: TypeFlags[src]
pub const HAS_TY_PLACEHOLDER: TypeFlags[src]Does this have Placeholder?
pub const HAS_RE_PLACEHOLDER: TypeFlags[src]
pub const HAS_RE_PLACEHOLDER: TypeFlags[src]Does this have RePlaceholder?
pub const HAS_CT_PLACEHOLDER: TypeFlags[src]
pub const HAS_CT_PLACEHOLDER: TypeFlags[src]Does this have ConstKind::Placeholder?
pub const HAS_FREE_LOCAL_REGIONS: TypeFlags[src]
pub const HAS_FREE_LOCAL_REGIONS: TypeFlags[src]true if there are “names” of regions and so forth
that are local to a particular fn/inferctxt
pub const HAS_FREE_LOCAL_NAMES: TypeFlags[src]
pub const HAS_FREE_LOCAL_NAMES: TypeFlags[src]true if there are “names” of types and regions and so forth
that are local to a particular fn
pub const HAS_TY_PROJECTION: TypeFlags[src]
pub const HAS_TY_PROJECTION: TypeFlags[src]Does this have Projection?
pub const HAS_TY_OPAQUE: TypeFlags[src]
pub const HAS_TY_OPAQUE: TypeFlags[src]Does this have Opaque?
pub const HAS_CT_PROJECTION: TypeFlags[src]
pub const HAS_CT_PROJECTION: TypeFlags[src]Does this have ConstKind::Unevaluated?
pub const HAS_PROJECTION: TypeFlags[src]
pub const HAS_PROJECTION: TypeFlags[src]Could this type be normalized further?
pub const HAS_FREE_REGIONS: TypeFlags[src]
pub const HAS_FREE_REGIONS: TypeFlags[src]Does this have any region that “appears free” in the type?
Basically anything but ReLateBound and ReErased.
pub const HAS_RE_LATE_BOUND: TypeFlags[src]
pub const HAS_RE_LATE_BOUND: TypeFlags[src]Does this have any ReLateBound regions? Used to check
if a global bound is safe to evaluate.
pub const HAS_RE_ERASED: TypeFlags[src]
pub const HAS_RE_ERASED: TypeFlags[src]Does this have any ReErased regions?
pub const STILL_FURTHER_SPECIALIZABLE: TypeFlags[src]
pub const STILL_FURTHER_SPECIALIZABLE: TypeFlags[src]Does this value have parameters/placeholders/inference variables which could be
replaced later, in a way that would change the results of impl specialization?
pub const HAS_TY_FRESH: TypeFlags[src]
pub const HAS_TY_FRESH: TypeFlags[src]Does this value have InferTy::FreshTy/FreshIntTy/FreshFloatTy?
pub const HAS_CT_FRESH: TypeFlags[src]
pub const HAS_CT_FRESH: TypeFlags[src]Does this value have InferConst::Fresh?
pub fn from_bits(bits: u32) -> Option<TypeFlags>[src]
pub fn from_bits(bits: u32) -> Option<TypeFlags>[src]Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.
pub const fn from_bits_truncate(bits: u32) -> TypeFlags[src]
pub const fn from_bits_truncate(bits: u32) -> TypeFlags[src]Convert from underlying bit representation, dropping any bits that do not correspond to flags.
pub const unsafe fn from_bits_unchecked(bits: u32) -> TypeFlags[src]
pub const unsafe fn from_bits_unchecked(bits: u32) -> TypeFlags[src]Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).
pub const fn intersects(&self, other: TypeFlags) -> bool[src]
pub const fn intersects(&self, other: TypeFlags) -> bool[src]Returns true if there are flags common to both self and other.
Trait Implementations
impl BitAndAssign<TypeFlags> for TypeFlags[src]
impl BitAndAssign<TypeFlags> for TypeFlags[src]fn bitand_assign(&mut self, other: TypeFlags)[src]
fn bitand_assign(&mut self, other: TypeFlags)[src]Disables all flags disabled in the set.
impl BitOrAssign<TypeFlags> for TypeFlags[src]
impl BitOrAssign<TypeFlags> for TypeFlags[src]fn bitor_assign(&mut self, other: TypeFlags)[src]
fn bitor_assign(&mut self, other: TypeFlags)[src]Adds the set of flags.
impl BitXorAssign<TypeFlags> for TypeFlags[src]
impl BitXorAssign<TypeFlags> for TypeFlags[src]fn bitxor_assign(&mut self, other: TypeFlags)[src]
fn bitxor_assign(&mut self, other: TypeFlags)[src]Toggles the set of flags.
impl Extend<TypeFlags> for TypeFlags[src]
impl Extend<TypeFlags> for TypeFlags[src]fn extend<T: IntoIterator<Item = TypeFlags>>(&mut self, iterator: T)[src]
fn extend<T: IntoIterator<Item = TypeFlags>>(&mut self, iterator: T)[src]Extends a collection with the contents of an iterator. Read more
fn extend_one(&mut self, item: A)[src]
fn extend_one(&mut self, item: A)[src]extend_one)Extends a collection with exactly one element.
fn extend_reserve(&mut self, additional: usize)[src]
fn extend_reserve(&mut self, additional: usize)[src]extend_one)Reserves capacity in a collection for the given number of additional elements. Read more
impl FromIterator<TypeFlags> for TypeFlags[src]
impl FromIterator<TypeFlags> for TypeFlags[src]impl Ord for TypeFlags[src]
impl Ord for TypeFlags[src]impl PartialOrd<TypeFlags> for TypeFlags[src]
impl PartialOrd<TypeFlags> for TypeFlags[src]fn partial_cmp(&self, other: &TypeFlags) -> Option<Ordering>[src]
fn partial_cmp(&self, other: &TypeFlags) -> Option<Ordering>[src]This method returns an ordering between self and other values if one exists. Read more
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than (for self and other) and is used by the < operator. Read more
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool1.0.0[src]This method tests less than or equal to (for self and other) and is used by the <=
operator. Read more
impl SubAssign<TypeFlags> for TypeFlags[src]
impl SubAssign<TypeFlags> for TypeFlags[src]fn sub_assign(&mut self, other: TypeFlags)[src]
fn sub_assign(&mut self, other: TypeFlags)[src]Disables all flags enabled in the set.
impl Copy for TypeFlags[src]
impl Eq for TypeFlags[src]
impl StructuralEq for TypeFlags[src]
impl StructuralPartialEq for TypeFlags[src]
Auto Trait Implementations
impl RefUnwindSafe for TypeFlags
impl Send for TypeFlags
impl Sync for TypeFlags
impl Unpin for TypeFlags
impl UnwindSafe for TypeFlags
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]
impl<T> BorrowMut<T> for T where
T: ?Sized, [src]pub fn borrow_mut(&mut self) -> &mut T[src]
pub fn borrow_mut(&mut self) -> &mut T[src]Mutably borrows from an owned value. Read more
impl<T> ToOwned for T where
T: Clone, [src]
impl<T> ToOwned for T where
T: Clone, [src]type Owned = T
type Owned = TThe resulting type after obtaining ownership.
pub fn to_owned(&self) -> T[src]
pub fn to_owned(&self) -> T[src]Creates owned data from borrowed data, usually by cloning. Read more
pub fn clone_into(&self, target: &mut T)[src]
pub fn clone_into(&self, target: &mut T)[src]🔬 This is a nightly-only experimental API. (toowned_clone_into)
recently added
Uses borrowed data to replace owned data, usually by cloning. Read more