Struct stabby_abi::report::TypeReport

source ·
#[repr(C)]
pub struct TypeReport { pub name: Str<'static>, pub module: Str<'static>, pub fields: StableLike<Option<&'static FieldReport>, usize>, pub tyty: TyTy, pub version: u32, }
Expand description

A report of a type’s layout.

Fields§

§name: Str<'static>

The type’s name.

§module: Str<'static>

The type’s parent module’s path.

§fields: StableLike<Option<&'static FieldReport>, usize>

The fields of this type.

§tyty: TyTy

How the type was declared

§version: u32

The version of the type’s invariants.

Implementations§

source§

impl TypeReport

source

pub const fn has_optimal_layout() -> bool

Returns true if the layout for TypeReport is smaller or equal to that Rust would have generated for it.

source§

impl TypeReport

source

pub fn is_compatible(&self, other: &Self) -> bool

Whether or not two reports correspond to the same type, with the same layout and invariants.

source§

impl TypeReport

source

pub const fn fields(&self) -> Fields

Returns an iterator over the type’s fields.

Trait Implementations§

source§

impl Clone for TypeReport

source§

fn clone(&self) -> TypeReport

Returns a copy of the value. Read more
1.0.0 · source§

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

Performs copy-assignment from source. Read more
source§

impl Debug for TypeReport

source§

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

Formats the value using the given formatter. Read more
source§

impl Display for TypeReport

source§

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

Formats the value using the given formatter. Read more
source§

impl Hash for TypeReport

source§

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

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

impl IStable for TypeReport

§

type ForbiddenValues = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::ForbiddenValues

The values that the annotated type cannot occupy.
§

type UnusedBits = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::UnusedBits

The padding bits in the annotated types
§

type Size = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::Size

The size of the annotated type in bytes.
§

type Align = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::Align

The alignment of the annotated type in bytes.
§

type HasExactlyOneNiche = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::HasExactlyOneNiche

Allows the detection of whether or not core::option::Options are stable: Read more
§

type ContainsIndirections = <Struct<FieldPair<FieldPair<FieldPair<FieldPair<Str<'static>, Str<'static>>, StableLike<Option<&'static FieldReport>, usize>>, TyTy>, u32>> as IStable>::ContainsIndirections

Whether or not the type contains indirections (pointers, indices in independent data-structures…)
source§

const REPORT: &'static TypeReport = _

A compile-time generated report of the fields of the type, allowing for compatibility inspection.
source§

const ID: u64 = _

A stable (and ideally unique) identifier for the type. Often generated using crate::report::gen_id, but can be manually set.
source§

fn size() -> usize

Returns the size of the type.
source§

fn align() -> usize

Returns the alignment of the type.
source§

impl PartialEq for TypeReport

source§

fn eq(&self, other: &TypeReport) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

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

impl Copy for TypeReport

source§

impl Eq for TypeReport

source§

impl StructuralPartialEq for TypeReport

Auto Trait Implementations§

Blanket Implementations§

source§

impl<Source> AccessAs for Source

source§

fn ref_as<T>(&self) -> <Source as IGuardRef<T>>::Guard<'_>
where Source: IGuardRef<T>, T: ?Sized,

Provides immutable access to a type as if it were its ABI-unstable equivalent.
source§

fn mut_as<T>(&mut self) -> <Source as IGuardMut<T>>::GuardMut<'_>
where Source: IGuardMut<T>, T: ?Sized,

Provides mutable access to a type as if it were its ABI-unstable equivalent.
source§

impl<T> Any for T
where T: IStable,

source§

extern "C" fn report(&self) -> &'static TypeReport

The report of the type.
source§

extern "C" fn id(&self) -> u64

The id of the type.
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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, As> IGuardMut<As> for T
where T: Into<As>, As: Into<T>,

§

type GuardMut<'a> = MutAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary after applying its changes to the original.
source§

fn guard_mut_inner(&mut self) -> <T as IGuardMut<As>>::GuardMut<'_>

Construct the temporary and guard it through a mutable reference.
source§

impl<T, As> IGuardRef<As> for T
where T: Into<As>, As: Into<T>,

§

type Guard<'a> = RefAs<'a, T, As> where T: 'a

The type of the guard which will clean up the temporary.
source§

fn guard_ref_inner(&self) -> <T as IGuardRef<As>>::Guard<'_>

Construct the temporary and guard it through an immutable reference.
source§

impl<T> Includes<End> for T

§

type Output = End

The result
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.

source§

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

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

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

§

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

§

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.