use std::collections::HashMap;
use uor_addr::json::address;
fn main() {
let variants: &[&[u8]] = &[
"{\"city\":\"São Paulo\",\"country\":\"BR\"}".as_bytes(),
"{ \"country\" : \"BR\" , \"city\" : \"São Paulo\" }".as_bytes(),
b"{\"city\":\"Sa\xcc\x83o Paulo\",\"country\":\"BR\"}",
];
let mut cache: HashMap<uor_addr::KappaLabel<71>, Vec<&str>> = HashMap::new();
for raw in variants {
let label = address(raw).expect("valid JSON").address;
let view = std::str::from_utf8(raw).unwrap();
cache.entry(label).or_default().push(view);
}
println!("uor-addr — dedupe cache demo");
println!("(3 syntactic variants → {} bucket)\n", cache.len());
for (label, members) in &cache {
println!(" address: {label}");
for member in members {
println!(" ← {member}");
}
}
assert_eq!(
cache.len(),
1,
"all three variants must collapse to a single address"
);
println!("\nOK — structural equivalence collapses to one κ-label.");
}