use std::net::IpAddr;
use nibbletree::Node;
fn main() {
let mut node = Node::default();
let addrs: Vec<((IpAddr, usize), &str)> = vec![
(("0.0.0.0".parse().unwrap(), 0), "foo"),
(("10.0.0.0".parse().unwrap(), 8), "bar"),
(("172.16.0.0".parse().unwrap(), 12), "baz1"),
(("192.168.0.0".parse().unwrap(), 16), "quux1"),
];
for (k,v) in &addrs {
eprintln!("{:?} {:?}", k, v);
}
for (key, val) in addrs.into_iter() {
node.insert(&key, val);
}
println!("! {:?}", node.longest_match(&("172.15.0.1".parse().unwrap(), 32)));
println!("! {:?}", node.longest_match(&("10.0.0.1".parse().unwrap(), 32)));
println!("! {:?}", node.longest_match(&("172.16.0.1".parse().unwrap(), 32)));
println!("! {:?}", node.longest_match(&("192.168.0.1".parse().unwrap(), 32)));
println!("! {:?}", node.longest_match(&("192.168.1.0".parse().unwrap(), 24)));
let results = node.or_longer(&("128.0.0.0".parse().unwrap(), 1)).collect::<Vec<_>>();
for (k,v) in results {
println!("{:?} {:?}", k, v);
}
}