pub enum CowAction {
NoFile,
AlreadyPrivate,
BrokeSymlink,
BrokeHardlink,
}Expand description
Outcome of break_hardlink_if_needed.
Variants§
NoFile
Path didn’t exist — nothing to break, caller will create fresh.
AlreadyPrivate
Path was a regular private file (one link, not a symlink). Caller can mutate it directly.
BrokeSymlink
Path was a symlink. We atomically replaced the link with a fresh regular file holding the same content (staged in the same directory and renamed over the link in one step). The link target is untouched.
BrokeHardlink
Path was a hardlinked regular file (nlink > 1). We copied
the content into a new inode and atomically renamed it over
the original. Sibling links are untouched.
Trait Implementations§
impl Copy for CowAction
impl Eq for CowAction
impl StructuralPartialEq for CowAction
Auto Trait Implementations§
impl Freeze for CowAction
impl RefUnwindSafe for CowAction
impl Send for CowAction
impl Sync for CowAction
impl Unpin for CowAction
impl UnsafeUnpin for CowAction
impl UnwindSafe for CowAction
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<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
Compare self to
key and return true if they are equal.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