hexagon_map/direction/
display.rs

1use std::{
2    fmt::{Debug, Display, Formatter},
3    str::FromStr,
4};
5
6use super::*;
7
8impl FromStr for Orientation {
9    type Err = String;
10
11    fn from_str(s: &str) -> Result<Self, Self::Err> {
12        let lower = s.to_lowercase();
13        Err(lower)
14    }
15}
16
17impl Debug for Orientation {
18    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
19        match self {
20            Orientation::H(true) => f.write_str("→→"),
21            Orientation::P(true) => f.write_str("↑→"),
22            Orientation::Q(true) => f.write_str("↑←"),
23            Orientation::H(false) => f.write_str("←←"),
24            Orientation::P(false) => f.write_str("↓←"),
25            Orientation::Q(false) => f.write_str("↓→"),
26        }
27    }
28}
29
30impl Display for Orientation {
31    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
32        match self {
33            Orientation::H(true) => f.write_str("Right"),
34            Orientation::P(true) => f.write_str("UpRight"),
35            Orientation::Q(true) => f.write_str("UpLeft"),
36            Orientation::H(false) => f.write_str("Left"),
37            Orientation::P(false) => f.write_str("DownLeft"),
38            Orientation::Q(false) => f.write_str("DownRight"),
39        }
40    }
41}