pub trait Ty<I>:
    Copy
    + Debug
    + Hash
    + Eq
    + Into<<I as Interner>::GenericArg>
    + Into<<I as Interner>::Term>
    + IntoKind<Kind = TyKind<I>>
    + TypeSuperVisitable<I>
    + TypeSuperFoldable<I>
    + Relate<I>
    + Flagswhere
    I: Interner<Ty = Self>,{
Show 47 methods
    // Required methods
    fn new_unit(interner: I) -> Self;
    fn new_bool(interner: I) -> Self;
    fn new_u8(interner: I) -> Self;
    fn new_usize(interner: I) -> Self;
    fn new_infer(interner: I, var: InferTy) -> Self;
    fn new_var(interner: I, var: TyVid) -> Self;
    fn new_param(interner: I, param: <I as Interner>::ParamTy) -> Self;
    fn new_placeholder(
        interner: I,
        param: <I as Interner>::PlaceholderTy,
    ) -> Self;
    fn new_bound(
        interner: I,
        debruijn: DebruijnIndex,
        var: <I as Interner>::BoundTy,
    ) -> Self;
    fn new_anon_bound(
        interner: I,
        debruijn: DebruijnIndex,
        var: BoundVar,
    ) -> Self;
    fn new_canonical_bound(interner: I, var: BoundVar) -> Self;
    fn new_alias(interner: I, kind: AliasTyKind, alias_ty: AliasTy<I>) -> Self;
    fn new_error(interner: I, guar: <I as Interner>::ErrorGuaranteed) -> Self;
    fn new_adt(
        interner: I,
        adt_def: <I as Interner>::AdtDef,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_foreign(interner: I, def_id: <I as Interner>::ForeignId) -> Self;
    fn new_dynamic(
        interner: I,
        preds: <I as Interner>::BoundExistentialPredicates,
        region: <I as Interner>::Region,
    ) -> Self;
    fn new_coroutine(
        interner: I,
        def_id: <I as Interner>::CoroutineId,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_coroutine_closure(
        interner: I,
        def_id: <I as Interner>::CoroutineClosureId,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_closure(
        interner: I,
        def_id: <I as Interner>::ClosureId,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_coroutine_witness(
        interner: I,
        def_id: <I as Interner>::CoroutineId,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_coroutine_witness_for_coroutine(
        interner: I,
        def_id: <I as Interner>::CoroutineId,
        coroutine_args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_ptr(interner: I, ty: Self, mutbl: Mutability) -> Self;
    fn new_ref(
        interner: I,
        region: <I as Interner>::Region,
        ty: Self,
        mutbl: Mutability,
    ) -> Self;
    fn new_array_with_const_len(
        interner: I,
        ty: Self,
        len: <I as Interner>::Const,
    ) -> Self;
    fn new_slice(interner: I, ty: Self) -> Self;
    fn new_tup(interner: I, tys: &[Self]) -> Self;
    fn new_tup_from_iter<It, T>(
        interner: I,
        iter: It,
    ) -> <T as CollectAndApply<Self, Self>>::Output
       where It: Iterator<Item = T>,
             T: CollectAndApply<Self, Self>;
    fn new_fn_def(
        interner: I,
        def_id: <I as Interner>::FunctionId,
        args: <I as Interner>::GenericArgs,
    ) -> Self;
    fn new_fn_ptr(interner: I, sig: Binder<I, FnSig<I>>) -> Self;
    fn new_pat(interner: I, ty: Self, pat: <I as Interner>::Pat) -> Self;
    fn new_unsafe_binder(interner: I, ty: Binder<I, Self>) -> Self;
    fn tuple_fields(self) -> <I as Interner>::Tys;
    fn to_opt_closure_kind(self) -> Option<ClosureKind>;
    fn from_closure_kind(interner: I, kind: ClosureKind) -> Self;
    fn from_coroutine_closure_kind(interner: I, kind: ClosureKind) -> Self;
    fn has_unsafe_fields(self) -> bool;
    fn discriminant_ty(self, interner: I) -> Self;
    // Provided methods
    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 { ... }
}
Required Methods§
fn new_unit(interner: I) -> Self
fn new_bool(interner: I) -> Self
fn new_u8(interner: I) -> Self
fn new_usize(interner: I) -> Self
fn new_infer(interner: I, var: InferTy) -> Self
fn new_var(interner: I, var: TyVid) -> Self
fn new_param(interner: I, param: <I as Interner>::ParamTy) -> Self
fn new_placeholder(interner: I, param: <I as Interner>::PlaceholderTy) -> Self
fn new_bound( interner: I, debruijn: DebruijnIndex, var: <I as Interner>::BoundTy, ) -> Self
fn new_anon_bound(interner: I, debruijn: DebruijnIndex, var: BoundVar) -> Self
fn new_canonical_bound(interner: I, var: BoundVar) -> Self
fn new_alias(interner: I, kind: AliasTyKind, alias_ty: AliasTy<I>) -> Self
fn new_error(interner: I, guar: <I as Interner>::ErrorGuaranteed) -> Self
fn new_adt( interner: I, adt_def: <I as Interner>::AdtDef, args: <I as Interner>::GenericArgs, ) -> Self
fn new_foreign(interner: I, def_id: <I as Interner>::ForeignId) -> Self
fn new_dynamic( interner: I, preds: <I as Interner>::BoundExistentialPredicates, region: <I as Interner>::Region, ) -> Self
fn new_coroutine( interner: I, def_id: <I as Interner>::CoroutineId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_coroutine_closure( interner: I, def_id: <I as Interner>::CoroutineClosureId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_closure( interner: I, def_id: <I as Interner>::ClosureId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_coroutine_witness( interner: I, def_id: <I as Interner>::CoroutineId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_coroutine_witness_for_coroutine( interner: I, def_id: <I as Interner>::CoroutineId, coroutine_args: <I as Interner>::GenericArgs, ) -> Self
fn new_ptr(interner: I, ty: Self, mutbl: Mutability) -> Self
fn new_ref( interner: I, region: <I as Interner>::Region, ty: Self, mutbl: Mutability, ) -> Self
fn new_array_with_const_len( interner: I, ty: Self, len: <I as Interner>::Const, ) -> Self
fn new_slice(interner: I, ty: Self) -> Self
fn new_tup(interner: I, tys: &[Self]) -> Self
fn new_tup_from_iter<It, T>(
    interner: I,
    iter: It,
) -> <T as CollectAndApply<Self, Self>>::Outputwhere
    It: Iterator<Item = T>,
    T: CollectAndApply<Self, Self>,
fn new_fn_def( interner: I, def_id: <I as Interner>::FunctionId, args: <I as Interner>::GenericArgs, ) -> Self
fn new_fn_ptr(interner: I, sig: Binder<I, FnSig<I>>) -> Self
fn new_pat(interner: I, ty: Self, pat: <I as Interner>::Pat) -> Self
fn new_unsafe_binder(interner: I, ty: Binder<I, Self>) -> Self
fn tuple_fields(self) -> <I as Interner>::Tys
fn to_opt_closure_kind(self) -> Option<ClosureKind>
fn from_closure_kind(interner: I, kind: ClosureKind) -> Self
fn from_coroutine_closure_kind(interner: I, kind: ClosureKind) -> Self
Sourcefn has_unsafe_fields(self) -> bool
 
fn has_unsafe_fields(self) -> bool
Checks whether this type is an ADT that has unsafe fields.
fn discriminant_ty(self, interner: I) -> Self
Provided Methods§
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
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.