pub enum CallEffect {
ReturnAliasArg {
arg: usize,
},
ReturnPointerFromArg {
arg: usize,
},
ReturnPointerAdd {
base_arg: usize,
offset_arg: usize,
stride: Option<u64>,
},
ReturnPointerSub {
base_arg: usize,
offset_arg: usize,
stride: Option<u64>,
},
ReturnNonZero,
ReturnAligned {
align: u64,
ty_name: String,
},
ReturnConst {
value: u64,
label: String,
},
ReadMemory {
arg: usize,
},
WriteMemory {
pointer_arg: usize,
},
ReturnLengthOfArg {
arg: usize,
},
ReturnTupleFieldLength {
field: usize,
from_arg: usize,
},
ForgetArgFacts {
arg: usize,
reason: ForgetReason,
},
}Expand description
Path-local effect produced by a retained call.
Variants§
ReturnAliasArg
The return value aliases or is a direct value flow from an argument.
ReturnPointerFromArg
The return value is a pointer extracted from an aggregate/reference arg.
ReturnPointerAdd
The return value is base + offset * stride.
ReturnPointerSub
The return value is base - offset * stride.
ReturnNonZero
The return value is known to be non-zero.
ReturnAligned
The return value is known to satisfy a concrete alignment.
ReturnConst
The return value is a concrete layout/numeric constant.
ReadMemory
The call reads memory through an argument.
WriteMemory
The call writes one initialized element through a pointer argument.
ReturnLengthOfArg
The return value is the length of an aggregate argument.
ReturnTupleFieldLength
A specific field of the returned tuple carries the length of a given argument (e.g. split_at(mid) returns (left, right) where left.len() == mid).
ForgetArgFacts
Facts about an argument must be forgotten conservatively.
Trait Implementations§
Source§impl Clone for CallEffect
impl Clone for CallEffect
Source§fn clone(&self) -> CallEffect
fn clone(&self) -> CallEffect
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for CallEffect
impl RefUnwindSafe for CallEffect
impl Send for CallEffect
impl Sync for CallEffect
impl Unpin for CallEffect
impl UnwindSafe for CallEffect
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more