pub struct PointerMethod {
pub kind: PointerKind,
pub name: &'static str,
pub form: PointerOpForm,
pub intrinsic: IntrinsicId,
pub intrinsic_name: &'static str,
pub is_unchecked: bool,
}Expand description
One method or associated function on Ptr(T) / MutPtr(T) (ADR-0063).
Each entry is a pure metadata record describing the surface form. The
actual semantic / codegen behaviour is reused from the intrinsic
identified by PointerMethod::intrinsic — this registry exists only to
give sema the surface-to-intrinsic mapping. No new runtime functions.
intrinsic_name mirrors what the equivalent legacy @… form was called
(e.g. "ptr_read" for IntrinsicId::PtrRead). The codegen path
dispatches AirInstData::Intrinsic by name, so emitting the new surface
form lowers to the same string the old @ptr_read would have.
Fields§
§kind: PointerKindConstructor this method/fn is defined on.
name: &'static strName as written by the user (after . for methods, after :: for
associated fns).
form: PointerOpFormMethod (p.name(...)) or associated fn (Type(T)::name(...)).
intrinsic: IntrinsicIdStable identity used by codegen / IR analyzers.
intrinsic_name: &'static strSymbol the AIR Intrinsic instruction is tagged with.
is_unchecked: boolADR-0088: whether this op is unchecked. After Phase 3c the
table reflects the body-side principle: only ops whose body
dereferences a caller-supplied pointer or does
provenance-sensitive arithmetic on one are unchecked
(read, read_volatile, write, write_volatile, offset,
copy_from). The opaque-token ops (is_null, to_int) and
the constructors that don’t themselves dereference (from,
null, from_int) drop their gate — the deref-time gate at
the eventual read / write call site handles the hazard.
Trait Implementations§
Source§impl Clone for PointerMethod
impl Clone for PointerMethod
Source§fn clone(&self) -> PointerMethod
fn clone(&self) -> PointerMethod
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more