Struct Ty
pub struct Ty<'db>(/* private fields */);Implementations§
§impl Ty<'static>
impl Ty<'static>
pub fn ingredient(zalsa: &Zalsa) -> &IngredientImpl<Ty<'static>>
§impl<'db> Ty<'db>
impl<'db> Ty<'db>
pub fn new_<Db_, T0>(db: &'db Db_, kind_: T0) -> Ty<'db>where
T0: Lookup<InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<DbInterner<'db>>>>> + Hash,
Db_: Database + ?Sized,
InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<DbInterner<'db>>>>: HashEqLike<T0>,
§impl Ty<'_>
impl Ty<'_>
§impl<'db> Ty<'db>
impl<'db> Ty<'db>
pub fn new(interner: DbInterner<'db>, kind: TyKind<DbInterner<'db>>) -> Ty<'db>
pub fn inner(&self) -> &WithCachedTypeInfo<TyKind<DbInterner<'db>>>
pub fn new_adt( interner: DbInterner<'db>, adt_id: AdtId, args: GenericArgs<'db>, ) -> Ty<'db>
pub fn new_param( interner: DbInterner<'db>, id: TypeParamId, index: u32, ) -> Ty<'db>
pub fn new_placeholder( interner: DbInterner<'db>, placeholder: Placeholder<BoundTy>, ) -> Ty<'db>
pub fn new_infer(interner: DbInterner<'db>, infer: InferTy) -> Ty<'db>
pub fn new_int_var(interner: DbInterner<'db>, v: IntVid) -> Ty<'db>
pub fn new_float_var(interner: DbInterner<'db>, v: FloatVid) -> Ty<'db>
pub fn new_int(interner: DbInterner<'db>, i: IntTy) -> Ty<'db>
pub fn new_uint(interner: DbInterner<'db>, ui: UintTy) -> Ty<'db>
pub fn new_float(interner: DbInterner<'db>, f: FloatTy) -> Ty<'db>
pub fn new_fresh(interner: DbInterner<'db>, n: u32) -> Ty<'db>
pub fn new_fresh_int(interner: DbInterner<'db>, n: u32) -> Ty<'db>
pub fn new_fresh_float(interner: DbInterner<'db>, n: u32) -> Ty<'db>
pub fn new_empty_tuple(interner: DbInterner<'db>) -> Ty<'db>
pub fn new_imm_ptr(interner: DbInterner<'db>, ty: Ty<'db>) -> Ty<'db>
pub fn new_imm_ref( interner: DbInterner<'db>, region: Region<'db>, ty: Ty<'db>, ) -> Ty<'db>
pub fn new_opaque( interner: DbInterner<'db>, def_id: SolverDefId, args: GenericArgs<'db>, ) -> Ty<'db>
pub 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>>
pub 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>.
pub 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
pub 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>
pub fn safe_to_unsafe_fn_ty(
interner: DbInterner<'db>,
sig: Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>,
) -> Ty<'db>
pub fn safe_to_unsafe_fn_ty( interner: DbInterner<'db>, sig: Binder<DbInterner<'db>, FnSig<DbInterner<'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.
pub 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.
pub 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<DbInterner<'db>, FnSig<DbInterner<'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>
pub 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 + 'static), ) -> Option<Vec<Clause<'db>>>
pub 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§
§impl<'db> Flags for Ty<'db>
impl<'db> Flags for Ty<'db>
fn flags(&self) -> TypeFlags
fn outer_exclusive_binder(&self) -> DebruijnIndex
§impl<'db> From<Ty<'db>> for GenericArg<'db>
impl<'db> From<Ty<'db>> for GenericArg<'db>
§fn from(value: Ty<'db>) -> GenericArg<'db>
fn from(value: Ty<'db>) -> GenericArg<'db>
§impl<'db> HirDisplay<'db> for Ty<'db>
impl<'db> HirDisplay<'db> for Ty<'db>
fn hir_fmt(&self, f: &mut HirFormatter<'_, 'db>) -> Result<(), HirDisplayError>
§fn into_displayable<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
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 + 'static),
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.§fn display<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
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)§fn display_truncated<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
max_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_truncated<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
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)§fn display_limited<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
limited_size: Option<usize>,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_limited<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
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, enum§fn display_source_code<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
module_id: ModuleIdLt<'static>,
allow_opaque: bool,
) -> Result<String, DisplaySourceCodeError>
fn display_source_code<'a>( &'a self, db: &'db (dyn HirDatabase + 'static), module_id: ModuleIdLt<'static>, allow_opaque: bool, ) -> Result<String, DisplaySourceCodeError>
self that can be inserted into the given module.
Use this when generating code (e.g. assists)§fn display_test<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
fn display_test<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
self for test purposes§fn display_with_container_bounds<'a>(
&'a self,
db: &'db (dyn HirDatabase + 'static),
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 + 'static),
show_container_bounds: bool,
display_target: DisplayTarget,
) -> HirDisplayWrapper<'a, 'db, Self>where
Self: Sized,
self that shows the constraint from
the container for functions§impl<'db> Relate<DbInterner<'db>> for Ty<'db>
impl<'db> Relate<DbInterner<'db>> for Ty<'db>
fn relate<R>(
relation: &mut R,
a: Ty<'db>,
b: Ty<'db>,
) -> Result<Ty<'db>, TypeError<DbInterner<'db>>>where
R: TypeRelation<DbInterner<'db>>,
§impl<'db> Ty<DbInterner<'db>> for Ty<'db>
impl<'db> Ty<DbInterner<'db>> for Ty<'db>
fn new_unit(interner: DbInterner<'db>) -> Ty<'db>
fn new_bool(interner: DbInterner<'db>) -> Ty<'db>
fn new_u8(interner: DbInterner<'db>) -> Ty<'db>
fn new_usize(interner: DbInterner<'db>) -> Ty<'db>
fn new_infer(interner: DbInterner<'db>, var: InferTy) -> Ty<'db>
fn new_var(interner: DbInterner<'db>, var: TyVid) -> Ty<'db>
fn new_param(interner: DbInterner<'db>, param: ParamTy) -> Ty<'db>
fn new_placeholder( interner: DbInterner<'db>, param: Placeholder<BoundTy>, ) -> Ty<'db>
fn new_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundTy, ) -> Ty<'db>
fn new_anon_bound( interner: DbInterner<'db>, debruijn: DebruijnIndex, var: BoundVar, ) -> Ty<'db>
fn new_canonical_bound(interner: DbInterner<'db>, var: BoundVar) -> Ty<'db>
fn new_alias( interner: DbInterner<'db>, kind: AliasTyKind, alias_ty: AliasTy<DbInterner<'db>>, ) -> Ty<'db>
fn new_error(interner: DbInterner<'db>, guar: ErrorGuaranteed) -> Ty<'db>
fn new_adt( interner: DbInterner<'db>, adt_def: <DbInterner<'db> as Interner>::AdtDef, args: GenericArgs<'db>, ) -> Ty<'db>
fn new_foreign(interner: DbInterner<'db>, def_id: TypeAliasIdWrapper) -> Ty<'db>
fn new_dynamic( interner: DbInterner<'db>, preds: <DbInterner<'db> as Interner>::BoundExistentialPredicates, region: <DbInterner<'db> as Interner>::Region, ) -> Ty<'db>
fn new_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_coroutine_closure( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_closure( interner: DbInterner<'db>, def_id: ClosureIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_coroutine_witness( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_coroutine_witness_for_coroutine( interner: DbInterner<'db>, def_id: CoroutineIdWrapper, coroutine_args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_ptr(interner: DbInterner<'db>, ty: Ty<'db>, mutbl: Mutability) -> Ty<'db>
fn new_ref( interner: DbInterner<'db>, region: <DbInterner<'db> as Interner>::Region, ty: Ty<'db>, mutbl: Mutability, ) -> Ty<'db>
fn new_array_with_const_len( interner: DbInterner<'db>, ty: Ty<'db>, len: <DbInterner<'db> as Interner>::Const, ) -> Ty<'db>
fn new_slice(interner: DbInterner<'db>, ty: Ty<'db>) -> Ty<'db>
fn new_tup( interner: DbInterner<'db>, tys: &[<DbInterner<'db> as Interner>::Ty], ) -> Ty<'db>
fn new_tup_from_iter<It, T>( interner: DbInterner<'db>, iter: It, ) -> <T as CollectAndApply<Ty<'db>, Ty<'db>>>::Output
fn new_fn_def( interner: DbInterner<'db>, def_id: CallableIdWrapper, args: <DbInterner<'db> as Interner>::GenericArgs, ) -> Ty<'db>
fn new_fn_ptr( interner: DbInterner<'db>, sig: Binder<DbInterner<'db>, FnSig<DbInterner<'db>>>, ) -> Ty<'db>
fn new_pat( interner: DbInterner<'db>, ty: Ty<'db>, pat: <DbInterner<'db> as Interner>::Pat, ) -> Ty<'db>
fn new_unsafe_binder( interner: DbInterner<'db>, ty: Binder<DbInterner<'db>, <DbInterner<'db> as Interner>::Ty>, ) -> Ty<'db>
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) -> Ty<'db>
fn from_coroutine_closure_kind( interner: DbInterner<'db>, kind: ClosureKind, ) -> Ty<'db>
§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
§impl<'db> TypeFoldable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeFoldable<DbInterner<'db>> for Ty<'db>
§fn try_fold_with<F>(
self,
folder: &mut F,
) -> Result<Ty<'db>, <F as FallibleTypeFolder<DbInterner<'db>>>::Error>where
F: FallibleTypeFolder<DbInterner<'db>>,
fn try_fold_with<F>(
self,
folder: &mut F,
) -> Result<Ty<'db>, <F as FallibleTypeFolder<DbInterner<'db>>>::Error>where
F: FallibleTypeFolder<DbInterner<'db>>,
§impl<'db> TypeSuperFoldable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeSuperFoldable<DbInterner<'db>> for Ty<'db>
§fn try_super_fold_with<F>(
self,
folder: &mut F,
) -> Result<Ty<'db>, <F as FallibleTypeFolder<DbInterner<'db>>>::Error>where
F: FallibleTypeFolder<DbInterner<'db>>,
fn try_super_fold_with<F>(
self,
folder: &mut F,
) -> Result<Ty<'db>, <F as FallibleTypeFolder<DbInterner<'db>>>::Error>where
F: FallibleTypeFolder<DbInterner<'db>>,
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).§fn super_fold_with<F>(self, folder: &mut F) -> Ty<'db>where
F: TypeFolder<DbInterner<'db>>,
fn super_fold_with<F>(self, folder: &mut F) -> Ty<'db>where
F: TypeFolder<DbInterner<'db>>,
try_super_fold_with for use with
infallible folders. Do not override this method, to ensure coherence
with try_super_fold_with.§impl<'db> TypeSuperVisitable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeSuperVisitable<DbInterner<'db>> for Ty<'db>
§fn super_visit_with<V>(
&self,
visitor: &mut V,
) -> <V as TypeVisitor<DbInterner<'db>>>::Resultwhere
V: TypeVisitor<DbInterner<'db>>,
fn super_visit_with<V>(
&self,
visitor: &mut V,
) -> <V as TypeVisitor<DbInterner<'db>>>::Resultwhere
V: TypeVisitor<DbInterner<'db>>,
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).§impl<'db> TypeVisitable<DbInterner<'db>> for Ty<'db>
impl<'db> TypeVisitable<DbInterner<'db>> for Ty<'db>
§fn visit_with<V>(
&self,
visitor: &mut V,
) -> <V as TypeVisitor<DbInterner<'db>>>::Resultwhere
V: TypeVisitor<DbInterner<'db>>,
fn visit_with<V>(
&self,
visitor: &mut V,
) -> <V as TypeVisitor<DbInterner<'db>>>::Resultwhere
V: TypeVisitor<DbInterner<'db>>,
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.