pub(crate) enum CheckResult {
ProvedByRule,
ProvedBySmt,
Failed,
Unknown(UnknownReason),
}Expand description
Verification status for one required property on one path.
Variants§
ProvedByRule
Proved by a sound structural rule (a fast-path that needs no solver query): ZST guards, zero-element access, tracked invariants/flags, type-level transparency, provenance-origin classification. These are the rules that must be audited for soundness.
ProvedBySmt
Proved by an SMT query: the solver showed the negation is unsatisfiable (numeric bounds, byte-range coverage, alignment modulo/linear checks).
Failed
The verifier found a possible violation for this path.
Unknown(UnknownReason)
The verifier has not implemented or completed the proof for this path; the reason is carried in the payload.
Implementations§
Source§impl CheckResult
impl CheckResult
Sourcepub(crate) fn is_proved(&self) -> bool
pub(crate) fn is_proved(&self) -> bool
Whether this result counts as “proved” (by rule or by SMT).
Sourcepub(crate) fn label(&self) -> &'static str
pub(crate) fn label(&self) -> &'static str
The user-facing label for this result. ProvedByRule and ProvedBySmt
both report as "Proved" — the rule/SMT distinction is an internal
audit signal, not part of the report. An Unknown result is suffixed
with its reason when it is not the generic unimplemented case.
Sourcepub(crate) fn and(self, other: CheckResult) -> CheckResult
pub(crate) fn and(self, other: CheckResult) -> CheckResult
AND-combine two results: any Failed → Failed; any Unknown →
Unknown; only all-proved → proved (Rule when every conjunct was a
rule, otherwise Smt).
Sourcepub(crate) fn or(self, other: CheckResult) -> CheckResult
pub(crate) fn or(self, other: CheckResult) -> CheckResult
OR-combine two results: any proved → proved (a Rule proof dominates);
all Failed → Failed; otherwise Unknown.
Trait Implementations§
Source§impl Clone for CheckResult
impl Clone for CheckResult
Source§impl Debug for CheckResult
impl Debug for CheckResult
Source§impl PartialEq for CheckResult
impl PartialEq for CheckResult
impl StructuralPartialEq for CheckResult
Auto Trait Implementations§
impl DynSend for CheckResult
impl DynSync for CheckResult
impl Freeze for CheckResult
impl RefUnwindSafe for CheckResult
impl Send for CheckResult
impl Sync for CheckResult
impl Unpin for CheckResult
impl UnsafeUnpin for CheckResult
impl UnwindSafe for CheckResult
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more