potato_type/
lib.rs

1use pyo3::prelude::*;
2use std::fmt;
3use std::fmt::Display;
4use std::path::{Path, PathBuf};
5
6#[pyclass(eq, eq_int)]
7#[derive(Debug, PartialEq, Clone)]
8pub enum SaveName {
9    Prompt,
10}
11
12#[pymethods]
13impl SaveName {
14    #[staticmethod]
15    pub fn from_string(s: &str) -> Option<Self> {
16        match s {
17            "prompt" => Some(SaveName::Prompt),
18
19            _ => None,
20        }
21    }
22
23    pub fn as_string(&self) -> &str {
24        match self {
25            SaveName::Prompt => "prompt",
26        }
27    }
28
29    pub fn __str__(&self) -> String {
30        self.to_string()
31    }
32}
33
34impl Display for SaveName {
35    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
36        write!(f, "{}", self.as_string())
37    }
38}
39
40impl AsRef<Path> for SaveName {
41    fn as_ref(&self) -> &Path {
42        match self {
43            SaveName::Prompt => Path::new("prompt"),
44        }
45    }
46}
47
48// impl PathBuf: From<SaveName>
49impl From<SaveName> for PathBuf {
50    fn from(save_name: SaveName) -> Self {
51        PathBuf::from(save_name.as_ref())
52    }
53}