pub enum DestClass {
Missing,
PresentDeclared,
PresentDirty,
PresentInProgress,
PresentUndeclared,
}Expand description
Phase 1 per-child destination classifier output.
Lean reference: proof/Grex/Types.lean §“Five-way destination
classifier” + theorem classify_dest_total in
proof/Grex/Phase1.lean. Every Rust-side classify_dest invocation
returns exactly one variant; this is the totality the proof asserts.
Variants§
Missing
Path doesn’t exist on disk. Walker will clone here.
PresentDeclared
Path exists, has both .git/ AND a manifest entry, AND the
lockfile entry agrees. Walker will fetch (no clone needed).
PresentDirty
Path exists, has .git/ and a manifest entry, lockfile says
clean, but the git working tree is dirty (uncommitted changes
or untracked files).
PresentInProgress
Path exists with .git/ BUT mid-rebase, mid-merge,
mid-cherry-pick, mid-bisect, or mid-revert. Backed by the Lean
bridge axiom git_in_progress_decidable. Walker MUST refuse
here — both Phase 1 fetch and Phase 2 prune are unsafe.
PresentUndeclared
Path exists, has .git/ BUT no manifest entry declares it.
Walker aggregates these into a single
TreeError::UntrackedGitRepos error after Phase 1 completes
(see aggregate_untracked).
Trait Implementations§
impl Copy for DestClass
impl Eq for DestClass
impl StructuralPartialEq for DestClass
Auto Trait Implementations§
impl Freeze for DestClass
impl RefUnwindSafe for DestClass
impl Send for DestClass
impl Sync for DestClass
impl Unpin for DestClass
impl UnsafeUnpin for DestClass
impl UnwindSafe for DestClass
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