Skip to main content

Error

Enum Error 

Source
#[non_exhaustive]
pub enum Error { Io(Error), Escape(PathBuf), InvalidJournalName(String), NonUtf8Path(PathBuf), Corrupt(String), Recovery(String), StaleJournal(PathBuf), Torn { cause: String, rollback: String, }, }
Expand description

Everything applying or recovering a ChangeSet can fail with.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Io(Error)

The backend refused an operation. The staged set is unwound before this surfaces, so the tree is as it was.

§

Escape(PathBuf)

A staged path resolved outside the root it was applied against — either absolute, or climbing past the root with ... Refused before anything is written or journaled, because a set assembled from untrusted data must not be able to reach out of the tree it was pointed at.

§

InvalidJournalName(String)

A Journal was asked for under a name that is not a single path component. Refused at construction, because the name is joined onto a caller-supplied root and one containing .. or a separator would write outside the very tree an apply clamps into.

§

NonUtf8Path(PathBuf)

A staged path could not be encoded into the journal because it is not UTF-8. The journal stores paths as UTF-8 so that a set written on one platform replays identically on another; a path that cannot round-trip is refused at the commit point rather than silently mangled.

§

Corrupt(String)

A journal was found that could not be trusted: a bad magic, a checksum mismatch, a truncated record, an unknown op tag. Refused rather than partially replayed — a journal exists to prevent invented states, so one that cannot be read is never guessed at.

§

Recovery(String)

A journal was read successfully but could not be replayed to completion: a CopyFrom whose source has gone, or a rename with neither side present. Distinct from Corrupt — the intent was legible, the tree just could not be brought to it. The journal is left in place so a later recovery can finish once the missing piece is back.

§

StaleJournal(PathBuf)

A set was applied while a previous set’s journal was still on disk: an earlier change was interrupted and never recovered. Landing this set would overwrite the record needed to finish that one, so the apply refuses. Call recover first, then retry.

§

Torn

A staged op failed and the rollback that should have undone it failed too. The one case where the crate cannot say what is on disk — so it says exactly that, rather than reporting the original failure as if the tree were untouched.

The journal is deliberately left in place when this is returned, so the next recover rolls the set forward to the applied state. Either way the tree lands somewhere nameable.

Fields

§cause: String

The failure that triggered the rollback.

§rollback: String

The failure the rollback itself hit.

Trait Implementations§

Source§

impl Debug for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for Error

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for Error

Source§

fn from(e: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl !UnwindSafe for Error

§

impl Freeze for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.