MCPcopy Create free account
hub / github.com/argumentcomputer/ix / muts_name

Method muts_name

crates/common/src/address.rs:99–112  ·  view source on GitHub ↗

Build a synthetic `Name` for a mutual block's `Named` entry: `Ix. . `. Disambiguates alpha-equivalent blocks that share an `addr` but have different member names. Used by `compile/mutual.rs` to register each mutual block under a Muts-tagged meta so kernel ingress can discover and process it via `ingress_muts_block`.

(&self, first_member: &crate::env::Name)

Source from the content-addressed store, hash-verified

97 /// Muts-tagged meta so kernel ingress can discover and process it via
98 /// `ingress_muts_block`.
99 pub fn muts_name(&self, first_member: &crate::env::Name) -> crate::env::Name {
100 use crate::env::{Name, NameData};
101 let base = Name::str(Name::str(Name::anon(), "Ix".to_string()), self.hex());
102 // Append each component of `first_member` to the base, preserving
103 // numeric vs string parts.
104 fn go(base: Name, name: &Name) -> Name {
105 match name.as_data() {
106 NameData::Anonymous(_) => base,
107 NameData::Str(parent, s, _) => Name::str(go(base, parent), s.clone()),
108 NameData::Num(parent, n, _) => Name::num(go(base, parent), n.clone()),
109 }
110 }
111 go(base, first_member)
112 }
113
114 /// Constructs an address from a 64-character hexadecimal string.
115 pub fn from_hex(hex: &str) -> Option<Self> {

Calls 1

hexMethod · 0.80