pub enum StorageAlias {
Slot(U256),
Symbolic(ValueId),
Offset {
base: ValueId,
offset: U256,
},
}Expand description
A conservative storage alias key.
Variants§
Slot(U256)
A known absolute storage slot.
Symbolic(ValueId)
A loop-invariant symbolic slot value.
Offset
A loop-invariant symbolic base plus a known constant offset.
Implementations§
Source§impl StorageAlias
impl StorageAlias
Sourcepub fn for_value(func: &Function, value: ValueId) -> Self
pub fn for_value(func: &Function, value: ValueId) -> Self
Computes a conservative exact storage alias key for value.
Sourcepub fn may_alias(self, other: Self) -> bool
pub fn may_alias(self, other: Self) -> bool
Returns true if two alias keys may refer to the same storage slot.
Sourcepub const fn symbolic_base(self) -> Option<ValueId>
pub const fn symbolic_base(self) -> Option<ValueId>
Returns the symbolic base value, if this alias has one.
Trait Implementations§
Source§impl Clone for StorageAlias
impl Clone for StorageAlias
Source§fn clone(&self) -> StorageAlias
fn clone(&self) -> StorageAlias
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl Copy for StorageAlias
Source§impl Debug for StorageAlias
impl Debug for StorageAlias
impl Eq for StorageAlias
Source§impl Hash for StorageAlias
impl Hash for StorageAlias
Source§impl PartialEq for StorageAlias
impl PartialEq for StorageAlias
Source§fn eq(&self, other: &StorageAlias) -> bool
fn eq(&self, other: &StorageAlias) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for StorageAlias
Auto Trait Implementations§
impl Freeze for StorageAlias
impl RefUnwindSafe for StorageAlias
impl Send for StorageAlias
impl Sync for StorageAlias
impl Unpin for StorageAlias
impl UnsafeUnpin for StorageAlias
impl UnwindSafe for StorageAlias
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,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
fn equivalent(&self, key: &K) -> bool
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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