Ty

Struct Ty 

pub struct Ty<'db>(/* private fields */);

Implementations§

§

impl Ty<'static>

pub fn ingredient(zalsa: &Zalsa) -> &IngredientImpl<Ty<'static>>

§

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<'_>

pub fn default_debug_fmt( this: Ty<'_>, f: &mut Formatter<'_>, ) -> Result<(), Error>
where InternedWrapperNoDebug<WithCachedTypeInfo<TyKind<DbInterner<'db>>>>: for<'db> Debug,

Default debug formatting for this struct (may be useful if you define your own Debug impl)

§

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

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

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

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

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>

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>>

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

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>

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

FIXME: Get rid of this, it’s not a good abstraction

Trait Implementations§

§

impl<'db> Clone for Ty<'db>

§

fn clone(&self) -> Ty<'db>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl<'db> Debug for Ty<'db>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<'db> Flags for Ty<'db>

§

fn flags(&self) -> TypeFlags

§

fn outer_exclusive_binder(&self) -> DebruijnIndex

§

impl<'db> From<Ty<'db>> for GenericArg<'db>

§

fn from(value: Ty<'db>) -> GenericArg<'db>

Converts to this type from the input type.
§

impl<'db> From<Ty<'db>> for Term<'db>

§

fn from(value: Ty<'db>) -> Term<'db>

Converts to this type from the input type.
§

impl<'db> Hash for Ty<'db>

§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

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,

Returns a 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,

Returns a 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,

Returns a 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,

Returns a 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>

Returns a String representation of 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,

Returns a String representation of 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,

Returns a String representation of self that shows the constraint from the container for functions
§

impl<'db> IntoKind for Ty<'db>

§

type Kind = TyKind<DbInterner<'db>>

§

fn kind(self) -> <Ty<'db> as IntoKind>::Kind

§

impl<'db> PartialEq for Ty<'db>

§

fn eq(&self, other: &Ty<'db>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

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> ToTrace<'db> for Ty<'db>

§

fn to_trace(cause: &ObligationCause, a: Ty<'db>, b: Ty<'db>) -> TypeTrace<'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
where It: Iterator<Item = T>, T: CollectAndApply<Ty<'db>, Ty<'db>>,

§

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

Checks whether this type is an ADT that has unsafe fields.
§

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
where <impl IntoIterator as IntoIterator>::Item: Into<<I as Interner>::GenericArg>,

§

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>

§

fn try_fold_with<F>( self, folder: &mut F, ) -> Result<Ty<'db>, <F as FallibleTypeFolder<DbInterner<'db>>>::Error>
where F: FallibleTypeFolder<DbInterner<'db>>,

The entry point for folding. To fold a value t with a folder f call: t.try_fold_with(f). Read more
§

fn fold_with<F>(self, folder: &mut F) -> Ty<'db>
where F: TypeFolder<DbInterner<'db>>,

The entry point for folding. To fold a value t with a folder f call: t.fold_with(f). Read more
§

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>>,

Provides a default fold for a recursive type of interest. This should only be called within 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>>,

A convenient alternative to 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>

§

fn super_visit_with<V>( &self, visitor: &mut V, ) -> <V as TypeVisitor<DbInterner<'db>>>::Result
where V: TypeVisitor<DbInterner<'db>>,

Provides a default visit for a recursive type of interest. This should only be called within 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>

§

fn visit_with<V>( &self, visitor: &mut V, ) -> <V as TypeVisitor<DbInterner<'db>>>::Result
where V: TypeVisitor<DbInterner<'db>>,

The entry point for visiting. To visit a value t with a visitor v call: t.visit_with(v). Read more
§

impl<'db> Update for Ty<'db>

§

unsafe fn maybe_update(old_pointer: *mut Ty<'db>, new_value: Ty<'db>) -> bool

Returns Read more
§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T, R> CollectAndApply<T, R> for T

§

fn collect_and_apply<I, F>(iter: I, f: F) -> R
where I: Iterator<Item = T>, F: FnOnce(&[T]) -> R,

Equivalent to f(&iter.collect::<Vec<_>>()).

§

type Output = R

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> IntoBox<dyn Any> for T
where T: Any,

§

fn into_box(self) -> Box<dyn Any>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Send> for T
where T: Any + Send,

§

fn into_box(self) -> Box<dyn Any + Send>

Convert self into the appropriate boxed form.
§

impl<T> IntoBox<dyn Any + Send + Sync> for T
where T: Any + Send + Sync,

§

fn into_box(self) -> Box<dyn Any + Send + Sync>

Convert self into the appropriate boxed form.
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<I, T> TypeVisitableExt<I> for T
where I: Interner, T: TypeVisitable<I>,

§

fn has_type_flags(&self, flags: TypeFlags) -> bool

§

fn has_vars_bound_at_or_above(&self, binder: DebruijnIndex) -> bool

Returns 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

Returns true if this type has any regions that escape binder (and hence are not bound by it).
§

fn has_escaping_bound_vars(&self) -> bool

Return 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 more
§

fn 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

“Free” regions in this context means that it has any region that is not (a) erased or (b) late-bound.
§

fn has_erased_regions(&self) -> bool

§

fn has_erasable_regions(&self) -> bool

True if there are any un-erased free regions.
§

fn is_global(&self) -> bool

Indicates whether this value references only ‘global’ generic parameters that are the same regardless of what fn we are in. This is used for caching.
§

fn has_bound_regions(&self) -> bool

True if there are any late-bound regions
§

fn has_non_region_bound_vars(&self) -> bool

True if there are any late-bound non-region variables
§

fn has_bound_vars(&self) -> bool

True if there are any bound variables
§

fn still_further_specializable(&self) -> bool

Indicates whether this value still has parameters/placeholders/inference variables which could be replaced later, in a way that would change the results of impl specialization.
§

impl<I, T, U> Upcast<I, U> for T
where U: UpcastFrom<I, T>,

§

fn upcast(self, interner: I) -> U

§

impl<I, T> UpcastFrom<I, T> for T

§

fn upcast_from(from: T, _tcx: I) -> T

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<'a, T> Captures<'a> for T
where T: ?Sized,