1use std::str::FromStr;
2
3use crate::error::InvalidCommandError;
4
5#[derive(Clone, Copy, Debug)]
10pub enum Command {
11 Add,
13
14 Del,
16
17 Check,
21
22 Version,
24}
25
26impl FromStr for Command {
27 type Err = InvalidCommandError;
28
29 fn from_str(s: &str) -> Result<Self, Self::Err> {
31 match s {
32 "ADD" => Ok(Self::Add),
33 "DEL" => Ok(Self::Del),
34 "CHECK" => Ok(Self::Check),
35 "VERSION" => Ok(Self::Version),
36 _ => Err(InvalidCommandError),
37 }
38 }
39}
40
41impl AsRef<str> for Command {
42 fn as_ref(&self) -> &'static str {
44 match self {
45 Command::Add => "ADD",
46 Command::Del => "DEL",
47 Command::Check => "CHECK",
48 Command::Version => "VERSION",
49 }
50 }
51}