[][src]Enum rustc::mir::StatementKind

pub enum StatementKind<'tcx> {
    Assign(Box<(Place<'tcx>, Rvalue<'tcx>)>),
    FakeRead(FakeReadCauseBox<Place<'tcx>>),
    SetDiscriminant {
        place: Box<Place<'tcx>>,
        variant_index: VariantIdx,
    },
    StorageLive(Local),
    StorageDead(Local),
    InlineAsm(Box<InlineAsm<'tcx>>),
    Retag(RetagKindBox<Place<'tcx>>),
    AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, Variance),
    Nop,
}
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Variants

Assign(Box<(Place<'tcx>, Rvalue<'tcx>)>)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Write the RHS Rvalue to the LHS Place.

FakeRead(FakeReadCauseBox<Place<'tcx>>)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

This represents all the reading that a pattern match may do (e.g., inspecting constants and discriminant values), and the kind of pattern it comes from. This is in order to adapt potential error messages to these specific patterns.

Note that this also is emitted for regular let bindings to ensure that locals that are never accessed still get some sanity checks for, e.g., let x: ! = ..;

SetDiscriminant
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Write the discriminant for a variant to the enum Place.

Fields of SetDiscriminant

place: Box<Place<'tcx>>
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

variant_index: VariantIdx
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

StorageLive(Local)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Start a live range for the storage of the local.

StorageDead(Local)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

End the current live range for the storage of the local.

InlineAsm(Box<InlineAsm<'tcx>>)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Executes a piece of inline Assembly. Stored in a Box to keep the size of StatementKind low.

Retag(RetagKindBox<Place<'tcx>>)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Retag references in the given place, ensuring they got fresh tags. This is part of the Stacked Borrows model. These statements are currently only interpreted by miri and only generated when "-Z mir-emit-retag" is passed. See https://internals.rust-lang.org/t/stacked-borrows-an-aliasing-model-for-rust/8153/ for more details.

AscribeUserType(Box<(Place<'tcx>, UserTypeProjection)>, Variance)
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

Encodes a user's type ascription. These need to be preserved intact so that NLL can respect them. For example:

let a: T = y;

The effect of this annotation is to relate the type T_y of the place y to the user-given type T. The effect depends on the specified variance:

Nop
⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

No-op. Useful for deleting instructions without affecting statement indices.

Trait Implementations

impl<'tcx> Clone for StatementKind<'tcx>[src]

impl<'tcx> Debug for StatementKind<'tcx>[src]

impl<'tcx> Decodable for StatementKind<'tcx>[src]

impl<'tcx> Encodable for StatementKind<'tcx>[src]

impl<'tcx, '__ctx> HashStable<StableHashingContext<'__ctx>> for StatementKind<'tcx>[src]

impl<'tcx> PartialEq<StatementKind<'tcx>> for StatementKind<'tcx>[src]

impl<'tcx> StructuralPartialEq for StatementKind<'tcx>[src]

impl<'tcx> TypeFoldable<'tcx> for StatementKind<'tcx>[src]

Auto Trait Implementations

impl<'tcx> !RefUnwindSafe for StatementKind<'tcx>

impl<'tcx> !Send for StatementKind<'tcx>

impl<'tcx> !Sync for StatementKind<'tcx>

impl<'tcx> Unpin for StatementKind<'tcx>

impl<'tcx> !UnwindSafe for StatementKind<'tcx>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<'a, T> Captures<'a> for T where
    T: ?Sized
[src]

impl<T> Decodable for T where
    T: UseSpecializedDecodable
[src]

impl<T> Encodable for T where
    T: UseSpecializedEncodable + ?Sized
[src]

impl<T> Erased for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> MaybeResult<T> for T[src]

type Error = !

⚙️ This is an internal compiler API. (rustc_private)

This crate is being loaded from the sysroot, a permanently unstable location for private compiler dependencies. It is not intended for general use. Prefer using a public version of this crate from crates.io via Cargo.toml.

impl<E> SpecializationError for E[src]

impl<'tcx, T> Subst<'tcx> for T where
    T: TypeFoldable<'tcx>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.