How to create a map with key type point (x, y) and value type string in Rust

1 Answer

0 votes
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
   
*/
  
 

 



answered Aug 10 by avibootz
...