Skip to main content

Expr

Struct Expr 

Source
pub struct Expr {
    pub kind: ExprKind,
    pub ty: Ty,
    pub bits: Option<u32>,
    pub range: SourceRange,
}
Expand description

A typed expression.

Fields§

§kind: ExprKind

What the expression computes.

§ty: Ty

The type of its value.

§bits: Option<u32>

The number of bits the value is reduced to, when that is narrower than Expr::ty.

A bit-field wider than int keeps its declared type through the integer promotions (6.3.1.1p2 has nothing to say about it), but its value still ranges over the declared width only, and C99 6.7.2.1p10 makes that width the type the arithmetic happens in: unsigned long long b : 40 multiplies, adds and shifts in forty bits, exactly as an unsigned int does in thirty-two. Nothing else in the type model can say that, so the width rides along on the expression and code generation reduces the result to it.

§range: SourceRange

Where it was written.

Implementations§

Source§

impl Expr

Source

pub fn new(kind: ExprKind, ty: Ty, range: SourceRange) -> Self

Builds an expression.

Source

pub fn narrowed(self, bits: Option<u32>) -> Self

The same expression, computed in bits bits; see Expr::bits.

Source

pub fn int(value: i128, ty: Ty, range: SourceRange) -> Self

An integer constant of type ty.

Trait Implementations§

Source§

impl Clone for Expr

Source§

fn clone(&self) -> Self

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 Expr

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Expr

§

impl RefUnwindSafe for Expr

§

impl Send for Expr

§

impl Sync for Expr

§

impl Unpin for Expr

§

impl UnsafeUnpin for Expr

§

impl UnwindSafe for Expr

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.