pub trait AdtDef<I>:
Copy
+ Debug
+ Hash
+ Eqwhere
I: Interner,{
// Required methods
fn def_id(self) -> <I as Interner>::AdtId;
fn is_struct(self) -> bool;
fn is_packed(self) -> bool;
fn struct_tail_ty(
self,
interner: I,
) -> Option<EarlyBinder<I, <I as Interner>::Ty>>;
fn is_phantom_data(self) -> bool;
fn is_manually_drop(self) -> bool;
fn field_representing_type_info(
self,
interner: I,
args: <I as Interner>::GenericArgs,
) -> Option<FieldInfo<I>>;
fn all_field_tys(
self,
interner: I,
) -> EarlyBinder<I, impl IntoIterator<Item = <I as Interner>::Ty>>;
fn sizedness_constraint(
self,
interner: I,
sizedness: SizedTraitKind,
) -> Option<EarlyBinder<I, <I as Interner>::Ty>>;
fn is_fundamental(self) -> bool;
fn destructor(self, interner: I) -> Option<AdtDestructorKind>;
}Required Methods§
fn def_id(self) -> <I as Interner>::AdtId
fn is_struct(self) -> bool
fn is_packed(self) -> bool
Sourcefn struct_tail_ty(
self,
interner: I,
) -> Option<EarlyBinder<I, <I as Interner>::Ty>>
fn struct_tail_ty( self, interner: I, ) -> Option<EarlyBinder<I, <I as Interner>::Ty>>
Returns the type of the struct tail.
Expects the AdtDef to be a struct. If it is not, then this will panic.
fn is_phantom_data(self) -> bool
fn is_manually_drop(self) -> bool
fn field_representing_type_info( self, interner: I, args: <I as Interner>::GenericArgs, ) -> Option<FieldInfo<I>>
fn all_field_tys( self, interner: I, ) -> EarlyBinder<I, impl IntoIterator<Item = <I as Interner>::Ty>>
fn sizedness_constraint( self, interner: I, sizedness: SizedTraitKind, ) -> Option<EarlyBinder<I, <I as Interner>::Ty>>
fn is_fundamental(self) -> bool
fn destructor(self, interner: I) -> Option<AdtDestructorKind>
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.