pub trait EvalContextExt<'mir, 'tcx: 'mir>: MiriInterpCxExt<'mir, 'tcx> {
    fn init_once_get_or_create_id(
        &mut self,
        lock_op: &OpTy<'tcx, Provenance>,
        offset: u64
    ) -> InterpResult<'tcx, InitOnceId> { ... } fn init_once_get_or_create<F>(
        &mut self,
        existing: F
    ) -> InterpResult<'tcx, InitOnceId>
    where
        F: FnOnce(&mut MiriInterpCx<'mir, 'tcx>, InitOnceId) -> InterpResult<'tcx, Option<InitOnceId>>
, { ... } fn init_once_status(&mut self, id: InitOnceId) -> InitOnceStatus { ... } fn init_once_enqueue_and_block(
        &mut self,
        id: InitOnceId,
        thread: ThreadId,
        callback: Box<dyn MachineCallback<'mir, 'tcx> + 'tcx>
    ) { ... } fn init_once_begin(&mut self, id: InitOnceId) { ... } fn init_once_complete(&mut self, id: InitOnceId) -> InterpResult<'tcx> { ... } fn init_once_fail(&mut self, id: InitOnceId) -> InterpResult<'tcx> { ... } }

Provided Methods

Provides the closure with the next InitOnceId. Creates that InitOnce if the closure returns None, otherwise returns the value from the closure.

Put the thread into the queue waiting for the initialization.

Begin initializing this InitOnce. Must only be called after checking that it is currently uninitialized.

Implementors