Struct rustc_mir::interpret::eval_context::InfiniteLoopDetector[][src]

pub(crate) struct InfiniteLoopDetector<'a, 'mir, 'tcx: 'a + 'mir, M: Machine<'mir, 'tcx>> {
    hashes: FxHashSet<u64>,
    snapshots: FxHashSet<(M, Vec<Frame<'mir, 'tcx>>, Memory<'a, 'mir, 'tcx, M>)>,
}
🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Fields

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

The set of all EvalSnapshot hashes observed by this detector.

When a collision occurs in this table, we store the full snapshot in snapshots.

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

The set of all EvalSnapshots observed by this detector.

An EvalSnapshot will only be fully cloned once it has caused a collision in hashes. As a result, the detector must observe at least two full cycles of an infinite loop before it triggers.

Methods

impl<'a, 'mir, 'tcx, M> InfiniteLoopDetector<'a, 'mir, 'tcx, M> where
    M: Machine<'mir, 'tcx>,
    'tcx: 'a + 'mir, 
[src]

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Returns true if the loop detector has not yet observed a snapshot.

🔬 This is a nightly-only experimental API. (rustc_private)

this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml instead?

Trait Implementations

impl<'a, 'mir, 'tcx, M> Default for InfiniteLoopDetector<'a, 'mir, 'tcx, M> where
    M: Machine<'mir, 'tcx>,
    'tcx: 'a + 'mir, 
[src]

Returns the "default value" for a type. Read more

Auto Trait Implementations

impl<'a, 'mir, 'tcx, M> !Send for InfiniteLoopDetector<'a, 'mir, 'tcx, M>

impl<'a, 'mir, 'tcx, M> !Sync for InfiniteLoopDetector<'a, 'mir, 'tcx, M>