iop_coeus_node/policy/subtree/
mod.rs

1mod expiration;
2mod schema;
3
4pub use expiration::*;
5pub use schema::*;
6
7use super::*;
8
9pub trait SubtreePolicy {
10    fn validate(
11        &self, state: &State, policy_domain: &Domain, domain_after_op: &Domain,
12    ) -> Result<()>;
13}
14
15impl<T: SubtreePolicy> SubtreePolicy for Option<T> {
16    fn validate(
17        &self, state: &State, policy_domain: &Domain, domain_after_op: &Domain,
18    ) -> Result<()> {
19        if let Some(p) = self {
20            p.validate(state, policy_domain, domain_after_op)
21        } else {
22            Ok(())
23        }
24    }
25}
26
27impl SubtreePolicy for SubtreePolicies {
28    fn validate(
29        &self, state: &State, policy_domain: &Domain, domain_after_op: &Domain,
30    ) -> Result<()> {
31        self.expiration.validate(state, policy_domain, domain_after_op)?;
32        self.schema.validate(state, policy_domain, domain_after_op)?;
33        Ok(())
34    }
35}