atspi_common/
operation.rs1use crate::AtspiError;
2use std::{fmt, str::FromStr};
3
4#[derive(Debug, PartialEq, Clone, serde::Serialize, serde::Deserialize, Eq, Hash, Default)]
7pub enum Operation {
8 #[default]
9 #[serde(rename = "add")]
10 #[serde(alias = "add/system")]
11 #[serde(alias = "insert")]
12 #[serde(alias = "insert/system")]
13 Insert,
14 #[serde(rename = "delete")]
15 #[serde(alias = "delete/system")]
16 #[serde(alias = "remove")]
17 #[serde(alias = "remove/system")]
18 Delete,
19}
20
21impl FromStr for Operation {
22 type Err = AtspiError;
23 fn from_str(s: &str) -> Result<Self, Self::Err> {
24 match s {
25 "add" | "add/system" | "insert" | "insert/system" => Ok(Operation::Insert),
26 "delete" | "delete/system" | "remove" | "remove/system" => Ok(Operation::Delete),
27 _ => Err(AtspiError::KindMatch(format!("{s} is not a type of Operation"))),
28 }
29 }
30}
31
32impl fmt::Display for Operation {
33 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
34 match self {
35 Operation::Insert => write!(f, "insert"),
36 Operation::Delete => write!(f, "delete"),
37 }
38 }
39}