use crate::{default_deny, SdResult, ShadowConst};
use std::collections::BTreeSet;
use std::fs::File;
pub trait HookExt {
fn default_deny(&self) -> BTreeSet<ShadowConst>;
fn hook_inner(&self) -> &dyn Fn(&File) -> SdResult<()>;
}
impl<F> HookExt for F
where
F: Fn(&File) -> SdResult<()>,
{
fn default_deny(&self) -> BTreeSet<ShadowConst> {
default_deny()
}
fn hook_inner(&self) -> &dyn Fn(&File) -> SdResult<()> {
self
}
}
impl<F> HookExt for (F, BTreeSet<ShadowConst>)
where
F: Fn(&File) -> SdResult<()>,
{
fn default_deny(&self) -> BTreeSet<ShadowConst> {
self.1.clone()
}
fn hook_inner(&self) -> &dyn Fn(&File) -> SdResult<()> {
&self.0
}
}