Skip to main content

## AdtDef

# Trait AdtDef

Source

    pub trait AdtDef<I: Interner>:
        Copy
        + Debug
        + Hash
        + Eq {
        // Required methods
        fn def_id(self) -> I::AdtId;
        fn is_struct(self) -> bool;
        fn is_packed(self) -> bool;
        fn struct_tail_ty(self, interner: I) -> Option<EarlyBinder<I, Ty<I>>>;
        fn is_phantom_data(self) -> bool;
        fn is_manually_drop(self) -> bool;
        fn field_representing_type_info(
            self,
            interner: I,
            args: I::GenericArgs,
        ) -> Option<FieldInfo<I>>;
        fn all_field_tys(
            self,
            interner: I,
        ) -> EarlyBinder<I, impl IntoIterator<Item = Ty<I>>>;
        fn sizedness_constraint(
            self,
            interner: I,
            sizedness: SizedTraitKind,
        ) -> Option<EarlyBinder<I, Ty<I>>>;
        fn is_fundamental(self) -> bool;
        fn destructor(self, interner: I) -> Option<AdtDestructorKind>;
    }

## Required Methods§

Source

#### fn def_id(self) -> I::AdtId

Source

#### fn is_struct(self) -> bool

Source

#### fn is_packed(self) -> bool

Source

#### fn struct_tail_ty(self, interner: I) -> Option<EarlyBinder<I, Ty<I>>>

Returns the type of the struct tail.

Expects the `AdtDef` to be a struct. If it is not, then this will panic.

Source

#### fn is_phantom_data(self) -> bool

Source

#### fn is_manually_drop(self) -> bool

Source

#### fn field_representing_type_info( self, interner: I, args: I::GenericArgs, ) -> Option<FieldInfo<I>>

Source

#### fn all_field_tys( self, interner: I, ) -> EarlyBinder<I, impl IntoIterator<Item = Ty<I>>>

Source

#### fn sizedness_constraint( self, interner: I, sizedness: SizedTraitKind, ) -> Option<EarlyBinder<I, Ty<I>>>

Source

#### fn is_fundamental(self) -> bool

Source

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

## Implementors§