rustc_middle::infer::canonical

Type Alias Canonical

source
pub type Canonical<'tcx, V> = Canonical<TyCtxt<'tcx>, V>;

Aliased Type§

struct Canonical<'tcx, V> {
    pub value: V,
    pub max_universe: UniverseIndex,
    pub defining_opaque_types: &'tcx RawList<(), LocalDefId>,
    pub variables: &'tcx RawList<(), CanonicalVarInfo<TyCtxt<'tcx>>>,
}

Fields§

§value: V§max_universe: UniverseIndex§defining_opaque_types: &'tcx RawList<(), LocalDefId>§variables: &'tcx RawList<(), CanonicalVarInfo<TyCtxt<'tcx>>>

Trait Implementations§

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, ()>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, PolyFnSig<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Clause<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, DropckOutlivesResult<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, FnSig<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, NormalizationResult<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Ty<'tcx>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Vec<OutlivesBound<'tcx>>>>

source§

fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self

source§

fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = Self>, ) -> &'tcx mut [Self]

source§

impl<'tcx, T: Clone> Key for Canonical<'tcx, T>

Canonical query goals correspond to abstract trait operations that are not tied to any crate in particular.

source§

type Cache<V> = DefaultCache<Canonical<TyCtxt<'tcx>, T>, V>

source§

fn default_span(&self, _tcx: TyCtxt<'_>) -> Span

In the event that a cycle occurs, if no explicit span has been given for a query with key self, what span should we use?
source§

fn key_as_def_id(&self) -> Option<DefId>

If the key is a DefId or DefId–equivalent, return that DefId. Otherwise, return None.
source§

fn ty_def_id(&self) -> Option<DefId>

Layout§

Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.