pub enum SymbExpr<'tcx> {
Constant(Const<'tcx>),
Place(&'tcx Place<'tcx>),
Binary(BinOp, Box<SymbExpr<'tcx>>, Box<SymbExpr<'tcx>>),
Unary(UnOp, Box<SymbExpr<'tcx>>),
Cast(CastKind, Box<SymbExpr<'tcx>>, Ty<'tcx>),
Unknown,
}Variants§
Constant(Const<'tcx>)
Place(&'tcx Place<'tcx>)
Binary(BinOp, Box<SymbExpr<'tcx>>, Box<SymbExpr<'tcx>>)
Unary(UnOp, Box<SymbExpr<'tcx>>)
Cast(CastKind, Box<SymbExpr<'tcx>>, Ty<'tcx>)
Unknown
Implementations§
Source§impl<'tcx> SymbExpr<'tcx>
impl<'tcx> SymbExpr<'tcx>
pub fn from_operand( op: &'tcx Operand<'tcx>, place_ctx: &Vec<&'tcx Place<'tcx>>, ) -> Self
pub fn from_rvalue( rvalue: &'tcx Rvalue<'tcx>, place_ctx: Vec<&'tcx Place<'tcx>>, ) -> Self
pub fn resolve_upper_bound<T: IntervalArithmetic + ConstConvert + Debug + Clone + PartialEq>( &mut self, vars: &VarNodes<'tcx, T>, )
pub fn resolve_lower_bound<T: IntervalArithmetic + ConstConvert + Debug + Clone + PartialEq>( &mut self, vars: &VarNodes<'tcx, T>, )
fn resolve_recursive<T: IntervalArithmetic + ConstConvert + Debug + Clone + PartialEq>( &mut self, vars: &VarNodes<'tcx, T>, depth: usize, mode: BoundMode, )
pub fn simplify(&mut self)
Trait Implementations§
impl<'tcx> Eq for SymbExpr<'tcx>
impl<'tcx> StructuralPartialEq for SymbExpr<'tcx>
Auto Trait Implementations§
impl<'tcx> Freeze for SymbExpr<'tcx>
impl<'tcx> !RefUnwindSafe for SymbExpr<'tcx>
impl<'tcx> Send for SymbExpr<'tcx>
impl<'tcx> Sync for SymbExpr<'tcx>
impl<'tcx> Unpin for SymbExpr<'tcx>
impl<'tcx> !UnwindSafe for SymbExpr<'tcx>
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.