use std::fmt::Display;/// Build a short Cartesian label for two displayable values.pub fn label<T: Display>(x: T, y: T) -> String { // format pair format!("({}, {})", x, y)}pub fn labels<I, T>(pairs: I) -> Vec<String>where I: IntoIterator<Item = (T, T)>, T: Display,{ pairs.into_iter().map(|(a, b)| label(a, b)).collect()}fn main() { let pts = vec![(1u32, 2u32), (3, 4)]; for line in labels(pts) { println!("point {line}"); } println!("{}", label("x", "y"));}