gearbox 3.0.0

Excessive tooling for Rust, boosting productivity and operations
Documentation
use alloc::string::{String, ToString};

pub enum Severity {
    Emergency,
    Alert,
    Critical,
    Error,
    Warning,
    Notice,
    Info,
    Debug,
}

impl Severity {
    pub fn as_str(&self) -> &'static str {
        match self {
            Severity::Emergency => "emergency",
            Severity::Alert => "alert",
            Severity::Critical => "critical",
            Severity::Error => "error",
            Severity::Warning => "warning",
            Severity::Notice => "notice",
            Severity::Info => "info",
            Severity::Debug => "debug",
        }
    }

    pub fn as_int(&self) -> u8 {
        match self {
            Severity::Emergency => 0,
            Severity::Alert => 1,
            Severity::Critical => 2,
            Severity::Error => 3,
            Severity::Warning => 4,
            Severity::Notice => 5,
            Severity::Info => 6,
            Severity::Debug => 7,
        }
    }
}

impl ToString for Severity {
    fn to_string(&self) -> String {
        self.as_str().to_string()
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_severity_as_str() {
        assert_eq!(Severity::Emergency.as_str(), "emergency");
        assert_eq!(Severity::Alert.as_str(), "alert");
        assert_eq!(Severity::Critical.as_str(), "critical");
        assert_eq!(Severity::Error.as_str(), "error");
        assert_eq!(Severity::Warning.as_str(), "warning");
        assert_eq!(Severity::Notice.as_str(), "notice");
        assert_eq!(Severity::Info.as_str(), "info");
        assert_eq!(Severity::Debug.as_str(), "debug");
    }

    #[test]
    fn test_severity_as_int() {
        assert_eq!(Severity::Emergency.as_int(), 0);
        assert_eq!(Severity::Alert.as_int(), 1);
        assert_eq!(Severity::Critical.as_int(), 2);
        assert_eq!(Severity::Error.as_int(), 3);
        assert_eq!(Severity::Warning.as_int(), 4);
        assert_eq!(Severity::Notice.as_int(), 5);
        assert_eq!(Severity::Info.as_int(), 6);
        assert_eq!(Severity::Debug.as_int(), 7);
    }

    #[test]
    fn test_severity_to_string() {
        assert_eq!(Severity::Emergency.to_string(), "emergency".to_string());
        assert_eq!(Severity::Alert.to_string(), "alert".to_string());
        assert_eq!(Severity::Critical.to_string(), "critical".to_string());
        assert_eq!(Severity::Error.to_string(), "error".to_string());
        assert_eq!(Severity::Warning.to_string(), "warning".to_string());
        assert_eq!(Severity::Notice.to_string(), "notice".to_string());
        assert_eq!(Severity::Info.to_string(), "info".to_string());
        assert_eq!(Severity::Debug.to_string(), "debug".to_string());
    }
}