1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
use std::str::FromStr; #[allow(non_camel_case_types)] #[derive(Copy,Clone,Debug)] pub enum Facility { LOG_KERN = 0 << 3, LOG_USER = 1 << 3, LOG_MAIL = 2 << 3, LOG_DAEMON = 3 << 3, LOG_AUTH = 4 << 3, LOG_SYSLOG = 5 << 3, LOG_LPR = 6 << 3, LOG_NEWS = 7 << 3, LOG_UUCP = 8 << 3, LOG_CRON = 9 << 3, LOG_AUTHPRIV = 10 << 3, LOG_FTP = 11 << 3, LOG_LOCAL0 = 16 << 3, LOG_LOCAL1 = 17 << 3, LOG_LOCAL2 = 18 << 3, LOG_LOCAL3 = 19 << 3, LOG_LOCAL4 = 20 << 3, LOG_LOCAL5 = 21 << 3, LOG_LOCAL6 = 22 << 3, LOG_LOCAL7 = 23 << 3 } impl FromStr for Facility { type Err = (); fn from_str(s: &str) -> Result<Facility, ()> { let result = match &s.to_lowercase()[..] { "log_kern" | "kern" => Facility::LOG_KERN, "log_user" | "user" => Facility::LOG_USER, "log_mail" | "mail" => Facility::LOG_MAIL, "log_daemon" | "daemon" => Facility::LOG_DAEMON, "log_auth" | "auth" => Facility::LOG_AUTH, "log_syslog" | "syslog" => Facility::LOG_SYSLOG, "log_lpr" | "lpr" => Facility::LOG_LPR, "log_news" | "news" => Facility::LOG_NEWS, "log_uucp" | "uucp" => Facility::LOG_UUCP, "log_cron" | "cron" => Facility::LOG_CRON, "log_authpriv"| "authpriv" => Facility::LOG_AUTHPRIV, "log_ftp" | "ftp" => Facility::LOG_FTP, "log_local0" | "local0" => Facility::LOG_LOCAL0, "log_local1" | "local1" => Facility::LOG_LOCAL1, "log_local2" | "local2" => Facility::LOG_LOCAL2, "log_local3" | "local3" => Facility::LOG_LOCAL3, "log_local4" | "local4" => Facility::LOG_LOCAL4, "log_local5" | "local5" => Facility::LOG_LOCAL5, "log_local6" | "local6" => Facility::LOG_LOCAL6, "log_local7" | "local7" => Facility::LOG_LOCAL7, _ => return Err(()) }; Ok(result) } }