46 lines
1.1 KiB
Rust
46 lines
1.1 KiB
Rust
use std::collections::HashSet;
|
|
|
|
use crate::crossings::Crossing;
|
|
|
|
pub fn print_report(crossings: &[Crossing]) {
|
|
eprintln!();
|
|
eprintln!("County visits");
|
|
eprintln!("=============");
|
|
|
|
if crossings.is_empty() {
|
|
eprintln!("No county crossings found.");
|
|
return;
|
|
}
|
|
|
|
let mut visits = Vec::new();
|
|
|
|
visits.push(crossings[0].from.clone());
|
|
|
|
for crossing in crossings {
|
|
visits.push(crossing.to.clone());
|
|
}
|
|
|
|
for (index, county) in visits.iter().enumerate() {
|
|
eprintln!("{:3} {} [{}]", index + 1, county.name, county.id,);
|
|
}
|
|
|
|
let unique: HashSet<String> = visits.iter().map(|county| county.id.clone()).collect();
|
|
|
|
eprintln!();
|
|
eprintln!("Visits: {}", visits.len());
|
|
|
|
eprintln!("Unique counties: {}", unique.len());
|
|
|
|
eprintln!();
|
|
eprintln!("Border crossings");
|
|
eprintln!("=================");
|
|
|
|
for (index, crossing) in crossings.iter().enumerate() {
|
|
eprintln!(
|
|
"{:3} {} -> {}",
|
|
index + 1,
|
|
crossing.from.name,
|
|
crossing.to.name,
|
|
);
|
|
}
|
|
}
|