auto_spaces/
lib.rs

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}