# Type Alias rustc_middle::infer::canonical::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 variables: &'tcx List<CanonicalVarInfo<TyCtxt<'tcx>>>,
    }

## Fields§

§`value: V`§`max_universe: UniverseIndex`§`variables: &'tcx List<CanonicalVarInfo<TyCtxt<'tcx>>>`

## Trait Implementations§

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

#### fn allocate_from_iter<'a>( arena: &'a Arena<'tcx>, iter: impl IntoIterator<Item = Self> ) -> &'a 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.

§

#### type CacheSelector = DefaultCacheSelector<Canonical<TyCtxt<'tcx>, T>>

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.