use crate::filter::OpVal;
#[derive(Debug)]
pub struct OpValsBool(pub Vec<OpValBool>);
#[derive(Debug, Clone)]
pub enum OpValBool {
Eq(bool),
Not(bool),
Empty(bool),
}
impl From<bool> for OpValBool {
fn from(val: bool) -> Self {
OpValBool::Eq(val)
}
}
impl From<&bool> for OpValBool {
fn from(val: &bool) -> Self {
OpValBool::Eq(*val)
}
}
impl From<OpValBool> for OpVal {
fn from(val: OpValBool) -> Self {
OpVal::Bool(val)
}
}
impl From<bool> for OpVal {
fn from(val: bool) -> Self {
OpValBool::Eq(val).into()
}
}
impl From<&bool> for OpVal {
fn from(val: &bool) -> Self {
OpValBool::Eq(*val).into()
}
}
impl OpValBool {
pub fn is_match(&self, t_val: bool) -> bool {
use OpValBool::*;
match self {
Eq(p_val) => &t_val == p_val,
Not(p_val) => &t_val != p_val,
Empty(_) => false, }
}
}