irust_repl 0.25.1

IRust Repl abstraction
Documentation
#[cfg(feature = "serde")]
use serde::{Deserialize, Serialize};
use std::str::FromStr;

#[derive(Debug, Clone, Copy)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
pub enum CompileMode {
    Debug,
    Release,
}
impl CompileMode {
    pub fn is_release(&self) -> bool {
        matches!(self, Self::Release)
    }
}

impl FromStr for CompileMode {
    type Err = Box<dyn std::error::Error>;
    fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
        match s.to_lowercase().as_ref() {
            "debug" => Ok(CompileMode::Debug),
            "release" => Ok(CompileMode::Release),
            _ => Err("Unknown compile mode".into()),
        }
    }
}

impl std::fmt::Display for CompileMode {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        match self {
            CompileMode::Debug => write!(f, "Debug"),
            CompileMode::Release => write!(f, "Release"),
        }
    }
}