hexagon_map/direction/
display.rs1use 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}