Enum bytecode::access_path::Offset
source · pub enum Offset {
Field(usize),
VectorIndex,
Global(AbsStructType),
}
Expand description
Offset of an access path: either a field, vector index, or global key
Variants§
Field(usize)
Index into contents of a struct by field offset
VectorIndex
Unknown index into a vector
Global(AbsStructType)
A type index into global storage. Only follows a field or vector index of type address
Implementations§
source§impl Offset
impl Offset
pub fn global(mid: &ModuleId, sid: StructId, types: Vec<Type>) -> Self
pub fn field(f: usize) -> Self
sourcepub fn get_type(&self, base: &Type, env: &GlobalEnv) -> Type
pub fn get_type(&self, base: &Type, env: &GlobalEnv) -> Type
Get the type of offset base
/self
in function fun
sourcepub fn substitute_footprint(&mut self, type_actuals: &[Type])
pub fn substitute_footprint(&mut self, type_actuals: &[Type])
Bind free type variables in self
to type_actuals
sourcepub fn is_statically_known(&self) -> bool
pub fn is_statically_known(&self) -> bool
Return true if this offset is the same in all concrete program executions
sourcepub fn display<'a>(
&'a self,
base_type: &'a Type,
env: &'a GlobalEnv
) -> OffsetDisplay<'a>
pub fn display<'a>( &'a self, base_type: &'a Type, env: &'a GlobalEnv ) -> OffsetDisplay<'a>
Return a wrapper of self
that implements Display
using env
Trait Implementations§
source§impl Ord for Offset
impl Ord for Offset
source§impl PartialEq<Offset> for Offset
impl PartialEq<Offset> for Offset
source§impl PartialOrd<Offset> for Offset
impl PartialOrd<Offset> for Offset
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read moreimpl Eq for Offset
impl StructuralEq for Offset
impl StructuralPartialEq for Offset
Auto Trait Implementations§
impl RefUnwindSafe for Offset
impl Send for Offset
impl Sync for Offset
impl Unpin for Offset
impl UnwindSafe for Offset
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.