#[non_exhaustive]pub enum IssueKind {
MissingTable,
MissingColumn,
TypeMismatch,
NullabilityMismatch,
WrongPrimaryKey,
ExtraDbColumn,
QueryFailed,
}Expand description
Discrete failure mode for a single drift point.
#[non_exhaustive] so commit 4+ can add new kinds (CHECK
constraint mismatch, FK target missing, etc.) without breaking
downstream pattern matches.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
MissingTable
The table named by the Rust contract does not exist in
information_schema.columns.
MissingColumn
A Rust column has no corresponding DB column.
TypeMismatch
Rust column’s RustType is not compatible with the DB
column’s data_type / udt_name (per
RustType::is_compatible_with).
NullabilityMismatch
Rust says nullable, DB says NOT NULL — or vice versa.
WrongPrimaryKey
The DB’s primary key column(s) don’t match the contract’s
declared primary_key.
ExtraDbColumn
A DB column exists that the Rust contract doesn’t declare. Emitted as a warning — could be a deliberate audit column, could be drift.
QueryFailed
Introspection query failed (network, permissions, malformed schema). Reported as an error so the operator knows the validator couldn’t actually verify anything.
Trait Implementations§
impl Copy for IssueKind
impl Eq for IssueKind
impl StructuralPartialEq for IssueKind
Auto Trait Implementations§
impl Freeze for IssueKind
impl RefUnwindSafe for IssueKind
impl Send for IssueKind
impl Sync for IssueKind
impl Unpin for IssueKind
impl UnsafeUnpin for IssueKind
impl UnwindSafe for IssueKind
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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