[−][src]Struct rustc_mir::interpret::validity::ValidityVisitor

pub(in interpret::validity) struct ValidityVisitor<'rt, 'mir, 'tcx, M: Machine<'mir, 'tcx>> {
    path: Vec<PathElem>,
    ref_tracking: Option<&'rt mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>>,
    ctfe_mode: Option<CtfeValidationMode>,
    ecx: &'rt InterpCx<'mir, 'tcx, M>,
}

Fields

path: Vec<PathElem>

The path may be pushed to, but the part that is present when a function starts must not be changed! visit_fields and visit_array rely on this stack discipline.

ref_tracking: Option<&'rt mut RefTracking<MPlaceTy<'tcx, M::PointerTag>, Vec<PathElem>>>ctfe_mode: Option<CtfeValidationMode>

None indicates this is not validating for CTFE (but for runtime).

ecx: &'rt InterpCx<'mir, 'tcx, M>

Implementations

impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValidityVisitor<'rt, 'mir, 'tcx, M>[src]

pub(in interpret::validity) fn aggregate_field_path_elem(
    &mut self,
    layout: TyAndLayout<'tcx>,
    field: usize
) -> PathElem
[src]

pub(in interpret::validity) fn with_elem<R>(
    &mut self,
    elem: PathElem,
    f: impl FnOnce(&mut Self) -> InterpResult<'tcx, R>
) -> InterpResult<'tcx, R>
[src]

pub(in interpret::validity) fn check_wide_ptr_meta(
    &mut self,
    meta: MemPlaceMeta<M::PointerTag>,
    pointee: TyAndLayout<'tcx>
) -> InterpResult<'tcx>
[src]

pub(in interpret::validity) fn check_safe_pointer(
    &mut self,
    value: OpTy<'tcx, M::PointerTag>,
    kind: &str
) -> InterpResult<'tcx>
[src]

Check a reference or Box.

pub(in interpret::validity) fn try_visit_primitive(
    &mut self,
    value: OpTy<'tcx, M::PointerTag>
) -> InterpResult<'tcx, bool>
[src]

Check if this is a value of primitive type, and if yes check the validity of the value at that type. Return true if the type is indeed primitive.

pub(in interpret::validity) fn visit_scalar(
    &mut self,
    op: OpTy<'tcx, M::PointerTag>,
    scalar_layout: &Scalar
) -> InterpResult<'tcx>
[src]

Trait Implementations

impl<'rt, 'mir, 'tcx: 'mir, M: Machine<'mir, 'tcx>> ValueVisitor<'mir, 'tcx, M> for ValidityVisitor<'rt, 'mir, 'tcx, M>[src]

type V = OpTy<'tcx, M::PointerTag>

Auto Trait Implementations

impl<'rt, 'mir, 'tcx, M> !RefUnwindSafe for ValidityVisitor<'rt, 'mir, 'tcx, M>

impl<'rt, 'mir, 'tcx, M> !Send for ValidityVisitor<'rt, 'mir, 'tcx, M>

impl<'rt, 'mir, 'tcx, M> !Sync for ValidityVisitor<'rt, 'mir, 'tcx, M>

impl<'rt, 'mir, 'tcx, M> Unpin for ValidityVisitor<'rt, 'mir, 'tcx, M> where
    'mir: 'rt,
    'tcx: 'rt, 

impl<'rt, 'mir, 'tcx, M> !UnwindSafe for ValidityVisitor<'rt, 'mir, 'tcx, M>

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<T> From<T> for T[src]

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

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.

impl<T> WithConstness for T[src]