1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
9#[serde(rename_all = "snake_case")]
10pub enum Direction {
11 Out,
12 In,
13 Both,
14}
15
16#[derive(Debug, Clone, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum PredicateFilter {
20 AllowAll,
21 Allow(Vec<String>),
22 Deny(Vec<String>),
23}
24
25impl PredicateFilter {
26 pub fn allows(&self, predicate: &str) -> bool {
27 match self {
28 PredicateFilter::AllowAll => true,
29 PredicateFilter::Allow(list) => list.iter().any(|p| p == predicate),
30 PredicateFilter::Deny(list) => !list.iter().any(|p| p == predicate),
31 }
32 }
33}