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
48impl From<SaveName> for PathBuf {
50 fn from(save_name: SaveName) -> Self {
51 PathBuf::from(save_name.as_ref())
52 }
53}