crossbundle_tools/types/common/
profile.rs1use 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}