Skip to main content

Facts

Struct Facts 

Source
pub struct Facts {
    pub bounds: Option<Bounds>,
    pub init: Option<u64>,
    pub align: Option<u32>,
    pub live: bool,
}
Expand description

What is known about one value.

All four fields absent is the default and means nothing is known, which is not the same as knowing the pointer is bad. A fact is only ever a promise, never a denial, so an optimizer that loses one makes the program slower and never makes it wrong.

Fields§

§bounds: Option<Bounds>

The range the pointer is known to lie in, which is !bounds(lo, ext).

§init: Option<u64>

How many bytes at the pointer are known initialized, which is !init(n).

§align: Option<u32>

The alignment the pointer is known to have, in bytes, which is !aligned(a).

§live: bool

Whether the storage the pointer points into is known live here, which is !live.

Implementations§

Source§

impl Facts

Source

pub const NONE: Self

Nothing known, which is what every value has until something establishes otherwise.

Source

pub const fn is_empty(self) -> bool

Whether nothing at all is known, which is when there is nothing to print.

Trait Implementations§

Source§

impl Clone for Facts

Source§

fn clone(&self) -> Facts

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 Copy for Facts

Source§

impl Debug for Facts

Source§

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

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

impl Default for Facts

Source§

fn default() -> Facts

Returns the “default value” for a type. Read more
Source§

impl Display for Facts

Source§

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

The list form the textual IR uses, !live, !aligned(8), with the facts in a fixed order and nothing at all when none of them is known.

The two values a !bounds names are written by their raw index, which is the printer’s numbering only when the function was built in print order. Printer writes them itself for that reason and this is here for a diagnostic to use.

Source§

impl Eq for Facts

Source§

impl PartialEq for Facts

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Facts

Auto Trait Implementations§

§

impl Freeze for Facts

§

impl RefUnwindSafe for Facts

§

impl Send for Facts

§

impl Sync for Facts

§

impl Unpin for Facts

§

impl UnsafeUnpin for Facts

§

impl UnwindSafe for Facts

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

Source§

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

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.