pub struct WorktreeSetupContext {
pub original_cwd: PathBuf,
pub worktree_path: Option<PathBuf>,
pub worktree_was_created: bool,
pub cwd_changed: bool,
pub metadata_saved: bool,
}Expand description
Context for worktree setup that tracks partial state for cleanup on interruption.
This struct is used to track the state of worktree setup so that if the process is interrupted mid-setup, we can properly clean up:
- If worktree was created but not yet changed into, remove the worktree
- If CWD was changed, restore the original CWD
- If session metadata wasn’t saved, the worktree may be orphaned
Fields§
§original_cwd: PathBufThe original working directory before any changes
worktree_path: Option<PathBuf>The worktree path if one was created (but may not have been entered yet)
worktree_was_created: boolWhether the worktree was newly created (vs reused)
cwd_changed: boolWhether we’ve changed into the worktree directory
metadata_saved: boolWhether session metadata has been saved
Implementations§
Source§impl WorktreeSetupContext
impl WorktreeSetupContext
Sourcepub fn new() -> Result<Self>
pub fn new() -> Result<Self>
Create a new setup context, capturing the current working directory.
Sourcepub fn cleanup_on_interruption(&self)
pub fn cleanup_on_interruption(&self)
Clean up partial worktree setup on interruption.
This method:
- Restores the original CWD if it was changed
- Removes the worktree if it was newly created and metadata wasn’t saved
Trait Implementations§
Source§impl Clone for WorktreeSetupContext
impl Clone for WorktreeSetupContext
Source§fn clone(&self) -> WorktreeSetupContext
fn clone(&self) -> WorktreeSetupContext
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for WorktreeSetupContext
impl RefUnwindSafe for WorktreeSetupContext
impl Send for WorktreeSetupContext
impl Sync for WorktreeSetupContext
impl Unpin for WorktreeSetupContext
impl UnwindSafe for WorktreeSetupContext
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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>
Converts
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>
Converts
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