#[non_exhaustive]pub struct Finding {
pub check: CheckKind,
pub severity: Severity,
pub pack: Option<String>,
pub detail: String,
pub auto_fixable: bool,
pub synthetic: bool,
}Expand description
One observation from a single check.
Marked #[non_exhaustive] so future audit fields (per-finding
timestamp, plugin id, remediation hint) can land without breaking
out-of-crate consumers that destructure or struct-literal-construct
findings. Within grex-core the existing struct-literal sites
continue to work unchanged.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.check: CheckKindWhich check produced the finding.
severity: SeveritySeverity — drives the exit-code roll-up.
pack: Option<String>Optional pack id (None for workspace-wide findings).
detail: StringHuman-readable detail.
auto_fixable: boolTrue if --fix can heal this finding. Only
CheckKind::GitignoreSync ever sets this to true; the flag gates
the safety contract of apply_fixes.
synthetic: booltrue when this finding describes a v1.1.1 synthetic plain-git
pack (no .grex/pack.yaml on disk; manifest synthesised
in-memory by the walker). Surfaced in --json output so
downstream consumers can branch on the structured signal rather
than parsing the human-readable detail string.
Implementations§
Trait Implementations§
impl Eq for Finding
impl StructuralPartialEq for Finding
Auto Trait Implementations§
impl Freeze for Finding
impl RefUnwindSafe for Finding
impl Send for Finding
impl Sync for Finding
impl Unpin for Finding
impl UnsafeUnpin for Finding
impl UnwindSafe for Finding
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§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