1use std::{fmt::Display, str::FromStr};
2
3pub mod common;
4#[cfg(feature = "cursive")]
5pub mod cursive_canvas;
6#[cfg(feature = "sdl2")]
7pub mod sdl2_canvas;
8
9#[cfg(feature = "wasm")]
10pub mod wasm_canvas;
11
12#[derive(Debug)]
13pub enum Spaces {
14 #[cfg(feature = "sdl2")]
15 Sdl2,
16
17 #[cfg(feature = "cursive")]
18 Cursive,
19}
20
21impl Display for Spaces {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 write!(f, "{:?}", self)
24 }
25}
26
27impl FromStr for Spaces {
28 type Err = String;
29 fn from_str(s: &str) -> Result<Self, Self::Err> {
30 match &s.to_ascii_lowercase()[..] {
31 #[cfg(feature = "sdl2")]
32 "gui" | "sdl" | "sdl2" => Ok(Self::Sdl2),
33
34 #[cfg(feature = "cursive")]
35 "terminal" | "cursive" => Ok(Self::Cursive),
36 _ => Err(String::from("unknown")),
37 }
38 }
39}