crossbundle_tools/types/common/
profile.rs

1use crate::error::Error;
2use std::{path::Path, str::FromStr};
3
4#[derive(Copy, Clone, Debug, Eq, Hash, PartialEq)]
5pub enum Profile {
6    Debug,
7    Release,
8}
9
10impl Profile {
11    pub fn is_debug(&self) -> bool {
12        Self::Debug == *self
13    }
14}
15
16impl AsRef<Path> for Profile {
17    fn as_ref(&self) -> &Path {
18        Path::new(match self {
19            Self::Debug => "debug",
20            Self::Release => "release",
21        })
22    }
23}
24
25impl FromStr for Profile {
26    type Err = Error;
27
28    fn from_str(s: &str) -> Result<Self, Self::Err> {
29        match s {
30            "debug" => Ok(Profile::Debug),
31            "release" => Ok(Profile::Release),
32            _ => Err(Error::InvalidProfile(s.to_owned())),
33        }
34    }
35}
36
37impl ToString for Profile {
38    fn to_string(&self) -> String {
39        match self {
40            Self::Debug => "debug".to_string(),
41            Self::Release => "release".to_string(),
42        }
43    }
44}
45
46impl Default for Profile {
47    fn default() -> Self {
48        Self::Debug
49    }
50}