iop_coeus_node/policy/subtree/
mod.rs1mod 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}