rustc_middle::query::queries::inhabited_predicate_type

Type Alias ProvidedValue

Source
pub type ProvidedValue<'tcx> = InhabitedPredicate<'tcx>;
Expand description

This type alias specifies the type returned from query providers and the type used for decoding. For regular queries this is the declared returned type V, but arena_cache will use <V as Deref>::Target instead.

Aliased Type§

enum ProvidedValue<'tcx> {
    True,
    False,
    ConstIsZero(Const<'tcx>),
    NotInModule(DefId),
    GenericType(Ty<'tcx>),
    OpaqueType(OpaqueTypeKey<TyCtxt<'tcx>>),
    And(&'tcx [InhabitedPredicate<'tcx>; 2]),
    Or(&'tcx [InhabitedPredicate<'tcx>; 2]),
}

Variants§

§

True

Inhabited

§

False

Uninhabited

§

ConstIsZero(Const<'tcx>)

Uninhabited when a const value is non-zero. This occurs when there is an array of uninhabited items, but the array is inhabited if it is empty.

§

NotInModule(DefId)

Uninhabited if within a certain module. This occurs when an uninhabited type has restricted visibility.

§

GenericType(Ty<'tcx>)

Inhabited if some generic type is inhabited. These are replaced by calling Self::instantiate.

§

OpaqueType(OpaqueTypeKey<TyCtxt<'tcx>>)

Inhabited if either we don’t know the hidden type or we know it and it is inhabited.

§

And(&'tcx [InhabitedPredicate<'tcx>; 2])

A AND B

§

Or(&'tcx [InhabitedPredicate<'tcx>; 2])

A OR B

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:

  • True: 0 bytes
  • False: 0 bytes
  • ConstIsZero: 8 bytes
  • NotInModule: 8 bytes
  • GenericType: 8 bytes
  • OpaqueType: 16 bytes
  • And: 8 bytes
  • Or: 8 bytes