Skip to main content

RecordInfo

Struct RecordInfo 

Source
pub struct RecordInfo {
    pub kind: RecordKind,
    pub tag: Option<Symbol>,
    pub layout: Option<Layout>,
    pub fields: Vec<Field>,
    pub transparent: bool,
}
Expand description

What is known about one struct or union declaration.

Fields§

§kind: RecordKind

Whether it is a struct or a union.

§tag: Option<Symbol>

The tag, absent for an anonymous one.

§layout: Option<Layout>

The layout, absent until the members have been seen and laid out.

This is also what says whether the type is complete. A record is incomplete from the point its tag is first mentioned until its closing brace, and code in between may declare pointers to it and nothing else.

§fields: Vec<Field>

The members, placed, and empty until the record is complete.

One entry per member the program wrote, in that order, so a caller that kept the declarations can index the two together.

§transparent: bool

Whether __attribute__((transparent_union)) was written on it and held up.

Only ever true of a union, and only of one whose first member is the size and the alignment of the whole of it, which is what makes passing the union and passing that member the same thing at a call. What it buys is two rules: a parameter of this type is compatible with a parameter of any member’s type, and a value assigned to it is put into whichever member it fits. Both are in spec/13-gnu-compat.md.

Trait Implementations§

Source§

impl Clone for RecordInfo

Source§

fn clone(&self) -> RecordInfo

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for RecordInfo

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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,

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

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

fn try_from(value: U) -> Result<T, !>

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.