use std::collections::HashMap;
use std::fmt;
// Define Point struct
#[derive(Hash, Eq, PartialEq)]
struct Point {
x: i32,
y: i32,
}
// Implement getters and display
impl Point {
fn get_x(&self) -> i32 {
self.x
}
fn get_y(&self) -> i32 {
self.y
}
}
impl fmt::Display for Point {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "({}, {})", self.x, self.y)
}
}
fn main() {
let mut point_map: HashMap<Point, String> = HashMap::new();
point_map.insert(Point { x: 2, y: 7 }, "A".to_string());
point_map.insert(Point { x: 3, y: 6 }, "B".to_string());
point_map.insert(Point { x: 0, y: 0 }, "C".to_string());
for (point, value) in &point_map {
println!("x: {}, y: {} => {}", point.get_x(), point.get_y(), value);
}
}
/*
run:
x: 3, y: 6 => B
x: 2, y: 7 => A
x: 0, y: 0 => C
*/