A collection of node attributes stored as key-value pairs.
Uses a Vec internally for better cache locality with small attribute counts (typically 3-6).
Values can be either strings or JIDs, avoiding stringification overhead for JID attributes.
An owned attribute value that can be either a string or a structured JID.
This avoids string allocation for JID attributes by storing the JID directly,
eliminating format/parse overhead when routing logic needs the JID.
A decoded attribute value that can be either a string or a structured JID.
This avoids string allocation when decoding JID tokens - the JidRef is returned
directly and only converted to a string when actually needed.