pub struct Ty<'db>(/* private fields */);Implementations§
Source§impl Ty<'static>
impl Ty<'static>
pub fn ingredient(zalsa: &Zalsa) -> &IngredientImpl<Self>
Source§impl<'db> Ty<'db>
impl<'db> Ty<'db>
pub fn new_<Db_, T0: Lookup<InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<'db>>>> + Hash>(
db: &'db Db_,
kind_: T0,
) -> Selfwhere
Db_: ?Sized + Database,
InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<'db>>>: HashEqLike<T0>,
Source§impl Ty<'_>
impl Ty<'_>
Sourcepub fn default_debug_fmt(this: Self, f: &mut Formatter<'_>) -> Result
pub fn default_debug_fmt(this: Self, f: &mut Formatter<'_>) -> Result
Default debug formatting for this struct (may be useful if you define your own Debug impl)
Source§impl<'db> Ty<'db>
impl<'db> Ty<'db>
pub fn new(interner: DbInterner<'db>, kind: TyKind<'db>) -> Self
pub fn inner(&self) -> &WithCachedTypeInfo<TyKind<'db>>
pub fn new_adt( interner: DbInterner<'db>, adt_id: AdtId, args: GenericArgs<'db>, ) -> Self
pub fn new_param(interner: DbInterner<'db>, id: TypeParamId, index: u32) -> Self
pub fn new_placeholder( interner: DbInterner<'db>, placeholder: PlaceholderTy, ) -> Self
pub fn new_infer(interner: DbInterner<'db>, infer: InferTy) -> Self
pub fn new_int_var(interner: DbInterner<'db>, v: IntVid) -> Self
pub fn new_float_var(interner: DbInterner<'db>, v: FloatVid) -> Self
pub fn new_int(interner: DbInterner<'db>, i: IntTy) -> Self
pub fn new_uint(interner: DbInterner<'db>, ui: UintTy) -> Self
pub fn new_float(interner: DbInterner<'db>, f: FloatTy) -> Self
pub fn new_fresh(interner: DbInterner<'db>, n: u32) -> Self
pub fn new_fresh_int(interner: DbInterner<'db>, n: u32) -> Self
pub fn new_fresh_float(interner: DbInterner<'db>, n: u32) -> Self
pub fn new_empty_tuple(interner: DbInterner<'db>) -> Self
pub fn new_imm_ptr(interner: DbInterner<'db>, ty: Ty<'db>) -> Self
pub fn new_imm_ref( interner: DbInterner<'db>, region: Region<'db>, ty: Ty<'db>, ) -> Self
pub fn new_opaque( interner: DbInterner<'db>, def_id: SolverDefId, args: GenericArgs<'db>, ) -> Self
Sourcepub fn primitive_size(self, interner: DbInterner<'db>) -> Size
pub fn primitive_size(self, interner: DbInterner<'db>) -> Size
Returns the Size for primitive types (bool, uint, int, char, float).
pub fn int_size_and_signed(self, interner: DbInterner<'db>) -> (Size, bool)
pub fn walk(self) -> TypeWalker<DbInterner<'db>>
Sourcepub fn has_trivial_sizedness(
self,
tcx: DbInterner<'db>,
sizedness: SizedTraitKind,
) -> bool
pub fn has_trivial_sizedness( self, tcx: DbInterner<'db>, sizedness: SizedTraitKind, ) -> bool
Fast path helper for testing if a type is Sized or MetaSized.
Returning true means the type is known to implement the sizedness trait. Returning false
means nothing – could be sized, might not be.
Note that we could never rely on the fact that a type such as [_] is trivially !Sized
because we could be in a type environment with a bound such as [_]: Copy. A function with
such a bound obviously never can be called, but that doesn’t mean it shouldn’t typecheck.
This is why this method doesn’t return Option<bool>.
Sourcepub fn is_trivially_pure_clone_copy(self) -> bool
pub fn is_trivially_pure_clone_copy(self) -> bool
Fast path helper for primitives which are always Copy and which
have a side-effect-free Clone impl.
Returning true means the type is known to be pure and Copy+Clone.
Returning false means nothing – could be Copy, might not be.
This is mostly useful for optimizations, as these are the types on which we can replace cloning with dereferencing.
pub fn is_trivially_wf(self, tcx: DbInterner<'db>) -> bool
pub fn is_never(self) -> bool
pub fn is_bool(self) -> bool
Sourcepub fn is_scalar(self) -> bool
pub fn is_scalar(self) -> bool
A scalar type is one that denotes an atomic datum, with no sub-components. (A RawPtr is scalar because it represents a non-managed pointer, so its contents are abstract to rustc.)
pub fn is_infer(self) -> bool
pub fn is_numeric(self) -> bool
pub fn is_str(self) -> bool
pub fn is_unit(self) -> bool
pub fn is_raw_ptr(self) -> bool
pub fn is_array(self) -> bool
pub fn is_slice(self) -> bool
pub fn is_union(self) -> bool
pub fn boxed_ty(self) -> Option<Ty<'db>>
pub fn as_adt(self) -> Option<(AdtId, GenericArgs<'db>)>
pub fn ty_vid(self) -> Option<TyVid>
Sourcepub fn safe_to_unsafe_fn_ty(
interner: DbInterner<'db>,
sig: PolyFnSig<'db>,
) -> Ty<'db>
pub fn safe_to_unsafe_fn_ty( interner: DbInterner<'db>, sig: PolyFnSig<'db>, ) -> Ty<'db>
Given a fn type, returns an equivalent unsafe fn type;
that is, a fn type that is equivalent in every way for being
unsafe.
Sourcepub fn builtin_deref(self, explicit: bool) -> Option<Ty<'db>>
pub fn builtin_deref(self, explicit: bool) -> Option<Ty<'db>>
Returns the type of *ty.
The parameter explicit indicates if this is an explicit dereference.
Some types – notably raw ptrs – can only be dereferenced explicitly.
Sourcepub fn references_non_lt_error(self) -> bool
pub fn references_non_lt_error(self) -> bool
Whether the type contains some non-lifetime, aka. type or const, error type.
pub fn callable_sig( self, interner: DbInterner<'db>, ) -> Option<Binder<'db, FnSig<'db>>>
pub fn as_reference(self) -> Option<(Ty<'db>, Region<'db>, Mutability)>
pub fn as_reference_or_ptr(self) -> Option<(Ty<'db>, Rawness, Mutability)>
pub fn as_tuple(self) -> Option<Tys<'db>>
pub fn dyn_trait(self) -> Option<TraitId>
pub fn strip_references(self) -> Ty<'db>
pub fn strip_reference(self) -> Ty<'db>
Sourcepub fn replace_infer_with_error(self, interner: DbInterner<'db>) -> Ty<'db>
pub fn replace_infer_with_error(self, interner: DbInterner<'db>) -> Ty<'db>
Replace infer vars with errors.
This needs to be called for every type that may contain infer vars and is yielded to outside inference, as things other than inference do not expect to see infer vars.
pub fn from_builtin_type(interner: DbInterner<'db>, ty: BuiltinType) -> Ty<'db>
pub fn as_builtin(self) -> Option<BuiltinType>
pub fn impl_trait_bounds( self, db: &'db dyn HirDatabase, ) -> Option<Vec<Clause<'db>>>
Sourcepub fn equals_ctor(self, other: Ty<'db>) -> bool
pub fn equals_ctor(self, other: Ty<'db>) -> bool
FIXME: Get rid of this, it’s not a good abstraction
Trait Implementations§
Source§impl Configuration for Ty<'static>
impl Configuration for Ty<'static>
const LOCATION: Location
const DEBUG_NAME: &'static str = "Ty"
Source§type Fields<'a> = (InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<DbInterner<'a>>>>,)
type Fields<'a> = (InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<DbInterner<'a>>>>,)
Source§fn serialize<S: Serializer>(
fields: &Self::Fields<'_>,
serializer: S,
) -> Result<S::Ok, S::Error>
fn serialize<S: Serializer>( fields: &Self::Fields<'_>, serializer: S, ) -> Result<S::Ok, S::Error>
serde. Read moreSource§fn deserialize<'de, D: Deserializer<'de>>(
deserializer: D,
) -> Result<Self::Fields<'static>, D::Error>
fn deserialize<'de, D: Deserializer<'de>>( deserializer: D, ) -> Result<Self::Fields<'static>, D::Error>
serde. Read moreconst REVISIONS: NonZero<usize> = _
Source§impl<'db> From<Ty<'db>> for GenericArg<'db>
impl<'db> From<Ty<'db>> for GenericArg<'db>
Source§impl<'db> HirDisplay<'db> for Ty<'db>
impl<'db> HirDisplay<'db> for Ty<'db>
fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result
Source§fn into_displayable<'a>(
&'a self,
db: &'db dyn HirDatabase,
max_size: Option<usize>,
limited_size: Option<usize>,
omit_verbose_types: bool,
display_target: DisplayTarget,
display_kind: DisplayKind,
closure_style: ClosureStyle,
show_container_bounds: bool,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn into_displayable<'a>(
&'a self,
db: &'db dyn HirDatabase,
max_size: Option<usize>,
limited_size: Option<usize>,
omit_verbose_types: bool,
display_target: DisplayTarget,
display_kind: DisplayKind,
closure_style: ClosureStyle,
show_container_bounds: bool,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
Displayable type that is human-readable.Source§fn display<'a>(
&'a self,
db: &'db dyn HirDatabase,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display<'a>(
&'a self,
db: &'db dyn HirDatabase,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
Displayable type that is human-readable.
Use this for showing types to the user (e.g. diagnostics)Source§fn display_truncated<'a>(
&'a self,
db: &'db dyn HirDatabase,
max_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_truncated<'a>(
&'a self,
db: &'db dyn HirDatabase,
max_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
Displayable type that is human-readable and tries to be succinct.
Use this for showing types to the user where space is constrained (e.g. doc popups)Source§fn display_limited<'a>(
&'a self,
db: &'db dyn HirDatabase,
limited_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_limited<'a>(
&'a self,
db: &'db dyn HirDatabase,
limited_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
Displayable type that is human-readable and tries to limit the number of items inside.
Use this for showing definitions which may contain too many items, like trait, struct, enumSource§fn display_source_code<'a>(
&'a self,
db: &'db dyn HirDatabase,
module_id: ModuleId,
allow_opaque: bool,
) -> Result<String, DisplaySourceCodeError>
fn display_source_code<'a>( &'a self, db: &'db dyn HirDatabase, module_id: ModuleId, allow_opaque: bool, ) -> Result<String, DisplaySourceCodeError>
self that can be inserted into the given module.
Use this when generating code (e.g. assists)Source§fn display_test<'a>(
&'a self,
db: &'db dyn HirDatabase,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_test<'a>(
&'a self,
db: &'db dyn HirDatabase,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
self for test purposesSource§fn display_with_container_bounds<'a>(
&'a self,
db: &'db dyn HirDatabase,
show_container_bounds: bool,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_with_container_bounds<'a>(
&'a self,
db: &'db dyn HirDatabase,
show_container_bounds: bool,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
self that shows the constraint from
the container for functionsSource§impl<'db> Relate<DbInterner<'db>> for Ty<'db>
impl<'db> Relate<DbInterner<'db>> for Ty<'db>
fn relate<R: TypeRelation<DbInterner<'db>>>( relation: &mut R, a: Self, b: Self, ) -> RelateResult<DbInterner<'db>, Self>
Source§impl<'db> SalsaStructInDb for Ty<'db>
impl<'db> SalsaStructInDb for Ty<'db>
type MemoIngredientMap = MemoIngredientSingletonIndex
Source§fn lookup_ingredient_index(aux: &Zalsa) -> IngredientIndices
fn lookup_ingredient_index(aux: &Zalsa) -> IngredientIndices
Source§fn entries(zalsa: &Zalsa) -> impl Iterator<Item = DatabaseKeyIndex> + '_
fn entries(zalsa: &Zalsa) -> impl Iterator<Item = DatabaseKeyIndex> + '_
Source§fn cast(id: Id, type_id: TypeId) -> Option<Self>
fn cast(id: Id, type_id: TypeId) -> Option<Self>
Source§unsafe fn memo_table(
zalsa: &Zalsa,
id: Id,
current_revision: Revision,
) -> MemoTableWithTypes<'_>
unsafe fn memo_table( zalsa: &Zalsa, id: Id, current_revision: Revision, ) -> MemoTableWithTypes<'_>
id. Read moreSource§impl<'db> Ty<DbInterner<'db>> for Ty<'db>
impl<'db> Ty<DbInterner<'db>> for Ty<'db>
fn new_unit(interner: DbInterner<'db>) -> Self
fn new_bool(interner: DbInterner<'db>) -> Self
fn new_u8(interner: DbInterner<'db>) -> Self
fn new_usize(interner: DbInterner<'db>) -> Self
fn new_infer(interner: DbInterner<'db>, var: InferTy) -> Self
fn new_var(interner: DbInterner<'db>, var: TyVid) -> Self
fn new_param(interner: DbInterner<'db>, param: ParamTy) -> Self
fn new_placeholder(interner: DbInterner<'db>, param: PlaceholderTy) -> Self
fn new_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundTy, ) -> Self
fn new_anon_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundVar, ) -> Self
fn new_canonical_bound(interner: DbInterner<'db>, var: BoundVar) -> Self
fn new_alias( interner: DbInterner<'db>, kind: AliasTyKind, alias_ty: AliasTy<'db>, ) -> Self
fn new_error(interner: DbInterner<'db>, guar: ErrorGuaranteed) -> Self
fn new_adt( interner: DbInterner<'db>, adt_def: <DbInterner<'db> as Interner>::AdtDef, args: GenericArgs<'db>, ) -> Self
fn new_foreign(interner: DbInterner<'db>, def_id: TypeAliasIdWrapper) -> Self
fn new_dynamic( interner: DbInterner<'db>, preds: <DbInterner<'db> as Interner>::BoundExistentialPredicates, region: <DbInterner<'db> as Interner>::Region, ) -> Self
fn new_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_coroutine_closure( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_closure( interner: DbInterner<'db>, def_id: ClosureIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_coroutine_witness( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_coroutine_witness_for_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, coroutine_args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_ptr(interner: DbInterner<'db>, ty: Self, mutbl: Mutability) -> Self
fn new_ref( interner: DbInterner<'db>, region: <DbInterner<'db> as Interner>::Region, ty: Self, mutbl: Mutability, ) -> Self
fn new_array_with_const_len( interner: DbInterner<'db>, ty: Self, len: <DbInterner<'db> as Interner>::Const, ) -> Self
fn new_slice(interner: DbInterner<'db>, ty: Self) -> Self
fn new_tup( interner: DbInterner<'db>, tys: &[<DbInterner<'db> as Interner>::Ty], ) -> Self
fn new_tup_from_iter<It, T>(interner: DbInterner<'db>, iter: It) -> T::Outputwhere
It: Iterator<Item = T>,
T: CollectAndApply<Self, Self>,
fn new_fn_def( interner: DbInterner<'db>, def_id: CallableIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Self
fn new_fn_ptr( interner: DbInterner<'db>, sig: Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>, ) -> Self
fn new_pat( interner: DbInterner<'db>, ty: Self, pat: <DbInterner<'db> as Interner>::Pat, ) -> Self
fn new_unsafe_binder( interner: DbInterner<'db>, ty: Binder<DbInterner<'db>, <DbInterner<'db> as Interner>::Ty>, ) -> Self
fn tuple_fields(self) -> <DbInterner<'db> as Interner>::Tys
fn to_opt_closure_kind(self) -> Option<ClosureKind>
fn from_closure_kind(interner: DbInterner<'db>, kind: ClosureKind) -> Self
fn from_coroutine_closure_kind( interner: DbInterner<'db>, kind: ClosureKind, ) -> Self
Source§fn has_unsafe_fields(self) -> bool
fn has_unsafe_fields(self) -> bool
fn discriminant_ty( self, interner: DbInterner<'db>, ) -> <DbInterner<'db> as Interner>::Ty
fn new_projection_from_args( interner: I, def_id: <I as Interner>::DefId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_projection(
interner: I,
def_id: <I as Interner>::DefId,
args: impl IntoIterator- >,
) -> Self
fn is_ty_var(self) -> bool
fn is_ty_error(self) -> bool
fn is_floating_point(self) -> bool
fn is_integral(self) -> bool
fn is_fn_ptr(self) -> bool
fn fn_sig(self, interner: I) -> Binder<I, FnSig<I>>
fn is_known_rigid(self) -> bool
fn is_guaranteed_unsized_raw(self) -> bool
Source§impl<'db> TypeFoldable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeFoldable<DbInterner<'db>> for Ty<'db>
Source§fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>(
self,
folder: &mut F,
) -> Result<Self, F::Error>
fn try_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>
Source§impl<'db> TypeSuperFoldable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeSuperFoldable<DbInterner<'db>> for Ty<'db>
Source§fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>(
self,
folder: &mut F,
) -> Result<Self, F::Error>
fn try_super_fold_with<F: FallibleTypeFolder<DbInterner<'db>>>( self, folder: &mut F, ) -> Result<Self, F::Error>
TypeFolder methods, when a non-custom traversal
is desired for the value of the type of interest passed to that method.
For example, in MyFolder::try_fold_ty(ty), it is valid to call
ty.try_super_fold_with(self), but any other folding should be done
with xyz.try_fold_with(self).Source§fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self
fn super_fold_with<F: TypeFolder<DbInterner<'db>>>(self, folder: &mut F) -> Self
try_super_fold_with for use with
infallible folders. Do not override this method, to ensure coherence
with try_super_fold_with.Source§impl<'db> TypeSuperVisitable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeSuperVisitable<DbInterner<'db>> for Ty<'db>
Source§fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>(
&self,
visitor: &mut V,
) -> V::Result
fn super_visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result
TypeVisitor methods, when a non-custom
traversal is desired for the value of the type of interest passed to
that method. For example, in MyVisitor::visit_ty(ty), it is valid to
call ty.super_visit_with(self), but any other visiting should be done
with xyz.visit_with(self).Source§impl<'db> TypeVisitable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeVisitable<DbInterner<'db>> for Ty<'db>
Source§fn visit_with<V: TypeVisitor<DbInterner<'db>>>(
&self,
visitor: &mut V,
) -> V::Result
fn visit_with<V: TypeVisitor<DbInterner<'db>>>( &self, visitor: &mut V, ) -> V::Result
impl<'db> Copy for Ty<'db>
impl<'db> Eq for Ty<'db>
impl<'db> Send for Ty<'db>
impl<'db> StructuralPartialEq for Ty<'db>
impl<'db> Sync for Ty<'db>
Auto Trait Implementations§
impl<'db> Freeze for Ty<'db>
impl<'db> RefUnwindSafe for Ty<'db>
impl<'db> Unpin for Ty<'db>
impl<'db> UnwindSafe for Ty<'db>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
§impl<I, T> TypeVisitableExt<I> for Twhere
I: Interner,
T: TypeVisitable<I>,
impl<I, T> TypeVisitableExt<I> for Twhere
I: Interner,
T: TypeVisitable<I>,
fn has_type_flags(&self, flags: TypeFlags) -> bool
§fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool
fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool
true if self has any late-bound regions that are either
bound by binder or bound by some binder outside of binder.
If binder is ty::INNERMOST, this indicates whether
there are any late-bound regions that appear free.fn error_reported(&self) -> Result<(), <I as Interner>::ErrorGuaranteed>
§fn has_vars_bound_above(&self, binder: DebruijnIndex) -> bool
fn has_vars_bound_above(&self, binder: DebruijnIndex) -> bool
true if this type has any regions that escape binder (and
hence are not bound by it).§fn has_escaping_bound_vars(&self) -> bool
fn has_escaping_bound_vars(&self) -> bool
true if this type has regions that are not a part of the type.
For example, for<'a> fn(&'a i32) return false, while fn(&'a i32)
would return true. The latter can occur when traversing through the
former. Read morefn has_aliases(&self) -> bool
fn has_opaque_types(&self) -> bool
fn has_coroutines(&self) -> bool
fn references_error(&self) -> bool
fn has_non_region_param(&self) -> bool
fn has_infer_regions(&self) -> bool
fn has_infer_types(&self) -> bool
fn has_non_region_infer(&self) -> bool
fn has_infer(&self) -> bool
fn has_placeholders(&self) -> bool
fn has_non_region_placeholders(&self) -> bool
fn has_param(&self) -> bool
§fn has_free_regions(&self) -> bool
fn has_free_regions(&self) -> bool
fn has_erased_regions(&self) -> bool
§fn has_erasable_regions(&self) -> bool
fn has_erasable_regions(&self) -> bool
§fn is_global(&self) -> bool
fn is_global(&self) -> bool
§fn has_bound_regions(&self) -> bool
fn has_bound_regions(&self) -> bool
§fn has_non_region_bound_vars(&self) -> bool
fn has_non_region_bound_vars(&self) -> bool
§fn has_bound_vars(&self) -> bool
fn has_bound_vars(&self) -> bool
§fn still_further_specializable(&self) -> bool
fn still_further_specializable(&self) -> bool
impl
specialization.