irust_repl/
compile_mode.rs1#[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}