use crate::muterprater::{MissingTrustEvidence, OperatorFamilyRef, ScopeShape};
#[path = "type_guard.rs"]
mod guard;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct RewriteDescriptor {
family: OperatorFamilyRef,
pattern: &'static str,
rewrite: &'static str,
}
#[must_use = "a refusal is the reason a rewrite descriptor was not built"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteRefusal {
EmptyPattern,
EmptyRewrite,
RewriteIsPattern,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RewriteRoster {
descriptors: Vec<RewriteDescriptor>,
}
#[must_use = "a refusal is the reason a rewrite roster was not built"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RosterRefusal {
EmptyRoster,
DuplicateDescriptor {
at: usize,
},
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteTrust {
AuditPending,
}
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
pub struct RewriteCandidate {
descriptor: RewriteDescriptor,
scope: ScopeShape,
trust: RewriteTrust,
}
#[must_use = "a refusal is the reason the rewrite audit road was withheld"]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteWithheld {
InterpreterUnavailable,
TrustNotOpened(MissingTrustEvidence),
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum RewriteAdmission {
Admitted,
Withheld(RewriteWithheld),
}
macro_rules! declare_artifact_mutations {
($( $(#[$variant_doc:meta])* $variant:ident => $description:literal, )+) => {
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub enum ArtifactMutation {
$(
$(#[$variant_doc])*
$variant,
)+
}
pub const ARTIFACT_MUTATIONS: &[ArtifactMutation] = &[
$(
ArtifactMutation::$variant,
)+
];
};
}
crate::depot::artifact_mutation_bank!(declare_artifact_mutations);