json_rules_engine_fork/
status.rs1use serde::{Deserialize, Serialize};
2use std::ops::{BitAnd, BitOr, Not};
3
4#[derive(Debug, Eq, PartialEq, Copy, Clone, Serialize, Deserialize)]
6pub enum Status {
7 Met,
9 NotMet,
11 Unknown,
13}
14
15impl BitAnd for Status {
16 type Output = Status;
17 fn bitand(self, rhs: Status) -> Status {
18 match (self, rhs) {
19 (Status::Met, Status::Met) => Status::Met,
20 (Status::NotMet, _) | (_, Status::NotMet) => Status::NotMet,
21 (_, _) => Status::Unknown,
22 }
23 }
24}
25
26impl BitOr for Status {
27 type Output = Status;
28 fn bitor(self, rhs: Status) -> Status {
29 match (self, rhs) {
30 (Status::NotMet, Status::NotMet) => Status::NotMet,
31 (Status::Met, _) | (_, Status::Met) => Status::Met,
32 (_, _) => Status::Unknown,
33 }
34 }
35}
36
37impl Not for Status {
38 type Output = Status;
39
40 fn not(self) -> Self::Output {
41 match self {
42 Status::Met => Status::NotMet,
43 Status::NotMet => Status::Met,
44 Status::Unknown => Status::Unknown,
45 }
46 }
47}