irust_repl/
compile_mode.rs

1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use std::str::FromStr;
4
5#[derive(Debug, Clone, Copy)]
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
7pub enum CompileMode {
8    Debug,
9    Release,
10}
11impl CompileMode {
12    pub fn is_release(&self) -> bool {
13        matches!(self, Self::Release)
14    }
15}
16
17impl FromStr for CompileMode {
18    type Err = Box<dyn std::error::Error>;
19    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
20        match s.to_lowercase().as_ref() {
21            "debug" => Ok(CompileMode::Debug),
22            "release" => Ok(CompileMode::Release),
23            _ => Err("Unknown compile mode".into()),
24        }
25    }
26}
27
28impl std::fmt::Display for CompileMode {
29    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
30        match self {
31            CompileMode::Debug => write!(f, "Debug"),
32            CompileMode::Release => write!(f, "Release"),
33        }
34    }
35}