use monocle::lens::parse::{ParseFilters, ParseLens};
fn main() -> anyhow::Result<()> {
let lens = ParseLens::new();
let url = "http://archive.routeviews.org/bgpdata/2026.08/UPDATES/updates.20260816.1200.bz2";
let value_filters = ParseFilters {
only_to_customer: Some("6777".to_string()),
..Default::default()
};
let elems = lens.parse_with_progress(&value_filters, url, None)?;
println!("Elements with only-to-customer = 6777: {}", elems.len());
for elem in elems.iter().take(3) {
let otc = elem
.only_to_customer
.map(|asn| asn.to_string())
.unwrap_or_default();
println!(" {} {} via {otc}", elem.timestamp, elem.prefix);
}
let presence_filters = ParseFilters {
only_to_customer: Some("*".to_string()),
..Default::default()
};
let present = lens.parse_with_progress(&presence_filters, url, None)?;
println!(
"Elements carrying an only-to-customer value: {}",
present.len()
);
let absence_filters = ParseFilters {
only_to_customer: Some("!*".to_string()),
..Default::default()
};
let absent = lens.parse_with_progress(&absence_filters, url, None)?;
println!(
"Elements without an only-to-customer value: {}",
absent.len()
);
Ok(())
}