const AGENT_PREFIX: &str = "agent:";
const NODE_PREFIX: &str = "node:";
pub fn agent_key(id: &str) -> String {
format!("{AGENT_PREFIX}{id}")
}
pub fn node_key(node_id: &str) -> String {
format!("{NODE_PREFIX}{node_id}")
}
pub fn split(key: &str) -> (&'static str, &str) {
if let Some(id) = key.strip_prefix(AGENT_PREFIX) {
("agent", id)
} else if let Some(id) = key.strip_prefix(NODE_PREFIX) {
("node", id)
} else {
("unknown", key)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn keys_are_disjoint_and_splittable() {
assert_ne!(agent_key("x"), node_key("x"));
assert_eq!(split(&agent_key("w1")), ("agent", "w1"));
assert_eq!(split(&node_key("n1")), ("node", "n1"));
assert_eq!(split("legacy"), ("unknown", "legacy"));
}
}