#![forbid(unsafe_code)]
#![deny(missing_docs)]
mod runner;
mod sans_io;
pub use guibiao::{
Baseline, BaselineEntry, Boundary, BoundaryKind, CrateBoundary, CrateTarget, DependencyKind,
ModuleBoundary, ModuleRule, Outcome, Polarity, Report, Rule, Severity, SourceKind, Violation,
ViolationId, check, workspace_member_src_dirs,
};
pub use guibiao::Constitution as GnomonConstitution;
pub use hunyi::{
AsyncExposureBoundary, DynTraitBoundary, ForbiddenMarkerBoundary, ImplTraitBoundary,
SemanticBoundaries, SemanticBoundary, TraitImplBoundary, UnsafeBoundary, VisibilityBoundary,
VisibilityCeiling, check as check_semantic,
};
#[doc(hidden)]
pub use hunyi::{
check_all, check_async_exposure, check_dyn_trait, check_forbidden_marker, check_impl_trait,
check_trait_impl_locality, check_unsafe_confinement, check_visibility,
};
pub use louke::{OriginEntry, Posture, RuntimeBoundary, Tracked, audit_probe_coverage};
#[doc(hidden)]
pub use guibiao::{
CrateBoundaryBuilder, CrateBoundaryDraft, DenyExternalDraft, ModuleBoundaryBuilder,
ModuleBoundaryDraft, ModuleTargetDraft,
};
#[doc(hidden)]
pub use hunyi::{
AsyncExposureBoundaryDraft, AsyncExposureCrateDraft, AsyncExposureModuleDraft,
DynTraitBoundaryDraft, DynTraitCrateDraft, DynTraitModuleDraft, ForbiddenMarkerBoundaryDraft,
ForbiddenMarkerCrateDraft, ForbiddenMarkerModuleDraft, ImplTraitBoundaryDraft,
ImplTraitCrateDraft, ImplTraitModuleDraft, SemanticBoundaryDraft, SemanticCrateDraft,
SemanticModuleDraft, TraitImplBoundaryDraft, TraitImplCrateDraft, TraitImplTraitDraft,
UnsafeBoundaryDraft, UnsafeCrateDraft, VisibilityBoundaryDraft, VisibilityCrateDraft,
VisibilityModuleDraft,
};
#[doc(hidden)]
pub use louke::{RuntimeBoundaryDraft, RuntimeSeamDraft};
pub use sans_io::SansIoPure;
#[doc(hidden)]
pub use sans_io::{SansIoPureCrateDraft, SansIoPureDraft, SansIoPureModuleDraft};
pub use runner::{constitution_markdown, projection_gate, run};
#[derive(Debug, Clone)]
pub struct Constitution {
static_: GnomonConstitution,
semantic: SemanticBoundaries,
runtime: Vec<RuntimeBoundary>,
}
impl Constitution {
pub fn new(name: &str) -> Self {
Constitution {
static_: GnomonConstitution::new(name),
semantic: SemanticBoundaries::default(),
runtime: Vec::new(),
}
}
pub fn boundary(mut self, boundary: impl Into<Boundary>) -> Self {
self.static_ = self.static_.boundary(boundary);
self
}
pub fn signature_boundary(mut self, boundary: SemanticBoundary) -> Self {
self.semantic.signature.push(boundary);
self
}
pub fn trait_impl_boundary(mut self, boundary: TraitImplBoundary) -> Self {
self.semantic.trait_impl.push(boundary);
self
}
pub fn visibility_boundary(mut self, boundary: VisibilityBoundary) -> Self {
self.semantic.visibility.push(boundary);
self
}
pub fn forbidden_marker_boundary(mut self, boundary: ForbiddenMarkerBoundary) -> Self {
self.semantic.forbidden_marker.push(boundary);
self
}
pub fn dyn_trait_boundary(mut self, boundary: DynTraitBoundary) -> Self {
self.semantic.dyn_trait.push(boundary);
self
}
pub fn impl_trait_boundary(mut self, boundary: ImplTraitBoundary) -> Self {
self.semantic.impl_trait.push(boundary);
self
}
pub fn async_exposure_boundary(mut self, boundary: AsyncExposureBoundary) -> Self {
self.semantic.async_exposure.push(boundary);
self
}
pub fn unsafe_boundary(mut self, boundary: UnsafeBoundary) -> Self {
self.semantic.unsafe_confinement.push(boundary);
self
}
pub fn runtime(mut self, boundary: RuntimeBoundary) -> Self {
self.runtime.push(boundary);
self
}
pub fn static_boundaries(&self) -> &GnomonConstitution {
&self.static_
}
pub fn semantic_boundaries(&self) -> &SemanticBoundaries {
&self.semantic
}
pub fn runtime_boundaries(&self) -> &[RuntimeBoundary] {
&self.runtime
}
}
impl From<GnomonConstitution> for Constitution {
fn from(static_: GnomonConstitution) -> Self {
Constitution {
static_,
semantic: SemanticBoundaries::default(),
runtime: Vec::new(),
}
}
}
pub mod prelude {
pub use super::{
AsyncExposureBoundary, Baseline, BaselineEntry, Boundary, BoundaryKind, Constitution,
CrateBoundary, DependencyKind, DynTraitBoundary, ForbiddenMarkerBoundary,
ImplTraitBoundary, ModuleBoundary, Outcome, Polarity, Report, Rule, RuntimeBoundary,
SansIoPure, SemanticBoundary, Severity, SourceKind, TraitImplBoundary, UnsafeBoundary,
Violation, ViolationId, VisibilityBoundary, VisibilityCeiling, check, run,
};
}