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, ()>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, ()>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, PolyFnSig<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Clause<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, DropckOutlivesResult<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, FnSig<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, NormalizationResult<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Ty<'tcx>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>>>>
impl<'tcx> ArenaAllocatable<'tcx> for Canonical<'tcx, QueryResponse<'tcx, Vec<OutlivesBound<'tcx>>>>
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut Self
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>
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 Cache<V> = DefaultCache<Canonical<TyCtxt<'tcx>, T>, V>
source§fn default_span(&self, _tcx: TyCtxt<'_>) -> Span
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>
fn key_as_def_id(&self) -> Option<DefId>
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.