#[repr(C)]pub struct MapPayload {
pub key_descriptor: *const TypeDescriptor,
pub value_descriptor: *const TypeDescriptor,
pub entries: HashMap<DynamicKey, GcRef>,
}Expand description
The Map[K, V] payload (§11.3). Both descriptors are labels: what the
construction site knew about the type, or null when it knew nothing.
Neither is the authority for an element-wise operation — every key carries
its own descriptor on its DynamicKey and every value carries one in its
object header, and that is what format/equals/hash dispatch through.
ADR-066 decision 5 is the rule: a null descriptor slot is legal and means
“the value’s own descriptor answers”. A non-nullable label would force
praxis_map_new to spell an unknown type as INT, and anything that
trusted it would read a Map[Text, Text]’s values as i64.
Fields§
§key_descriptor: *const TypeDescriptorThe descriptor for every key, or null when the construction site had no
static key type. Read it through MapPayload::key.
value_descriptor: *const TypeDescriptorThe descriptor for every value, or null when unknown. Read it through
MapPayload::value.
entries: HashMap<DynamicKey, GcRef>The entries. Keys are DynamicKey; values are GcRef.
Implementations§
Source§impl MapPayload
impl MapPayload
Sourcepub fn key(&self) -> Option<&'static TypeDescriptor>
pub fn key(&self) -> Option<&'static TypeDescriptor>
The key label, or None when this map was never told its key type.
Sourcepub fn value(&self) -> Option<&'static TypeDescriptor>
pub fn value(&self) -> Option<&'static TypeDescriptor>
The value label, or None when this map was never told its value type.