Skip to main content

CatalogError

Enum CatalogError 

Source
pub enum CatalogError {
    AlreadyExists {
        name_version: String,
    },
    InvalidNameVersion {
        name_version: String,
        reason: String,
    },
    RetiredWithDifferentContent {
        name_version: String,
        previous_hash: String,
        new_hash: String,
    },
    NotFound {
        name_version: String,
        did_you_mean: Vec<String>,
    },
    UnqualifiedName {
        name: String,
    },
    CorruptIndex {
        path: PathBuf,
        reason: String,
    },
    UnrecognizedArtifact {
        path: PathBuf,
        header: Vec<u8>,
    },
    UninspectableArtifact {
        path: PathBuf,
        reason: String,
    },
    MalformedHash {
        hash: String,
    },
    Io(Error),
}
Expand description

Something went wrong reading, writing, or resolving through the catalog.

Variants§

§

AlreadyExists

name@version was already catalogued; versions are immutable once published.

Fields

§name_version: String

The name@version that was already present.

§

InvalidNameVersion

The identifier handed to add is not a well-formed name@version.

Fields

§name_version: String

The identifier that was rejected.

§reason: String

Why it was rejected, as a sentence fragment.

§

RetiredWithDifferentContent

name@version was published, then removed, and is now being re-added with different content. Removing an entry drops it from the index but does not un-publish the identity, so this is still the immutability violation AlreadyExists guards against — just spread over two steps.

Fields

§name_version: String

The name@version being re-added.

§previous_hash: String

The hash it was published with originally.

§new_hash: String

The hash of the artifact now being offered.

§

NotFound

No entry matches the requested name@version.

Fields

§name_version: String

The name@version that was requested.

§did_you_mean: Vec<String>

Names within edit distance 2 of the requested one, closest first, capped at 5. Empty when nothing is close.

§

UnqualifiedName

An unqualified name was used somewhere that requires an exact version (resolving a node reference already recorded inside a bundle’s manifest — see ResolutionContext::Durable).

Fields

§name: String

The unqualified name that was rejected.

§

CorruptIndex

The catalog’s own index.json failed to parse.

Fields

§path: PathBuf

Path to the unreadable index file.

§reason: String

What went wrong parsing it.

§

UnrecognizedArtifact

The artifact’s magic bytes match neither a wasm module nor a bundle.

Fields

§path: PathBuf

The path that was handed to add.

§header: Vec<u8>

The first bytes actually seen.

§

UninspectableArtifact

The artifact’s magic bytes were recognised, but its contents could not be read: a wasm-magic file whose module body is truncated or otherwise invalid, or a bundle-magic file whose manifest JSON fails to parse. Distinct from CorruptIndex (that’s the catalog’s own bookkeeping file, not an input artifact) and from UnrecognizedArtifact (that’s the magic byte itself not matching anything).

Fields

§path: PathBuf

The path that was handed to add, or a synthetic label standing in for one — read_bundle_signature takes a label: &str that need not be a real filesystem path. add always passes a real on-disk path, but pipeline::check calls it with a stage’s display name, which for a Cataloged stage (built by pipeline::resolve_and_load from a bare catalog name, not a filesystem path) is just that bare name.

§reason: String

What went wrong reading past the magic bytes.

§

MalformedHash

An entry’s hash came back from index.json in a shape that isn’t a well-formed sha256 digest (64 lowercase hex digits, optionally prefixed with sha256:) — the exact shape write_blob always produces. index.json is never format-validated on read, so a hand-edited or maliciously crafted index could otherwise smuggle ../ traversal or an absolute path into a filesystem join; this is the guard that rejects it before that ever happens. Distinct from CorruptIndex (that’s index.json failing to parse as JSON at all; this is JSON that parses fine but whose hash field is nonsense).

Fields

§hash: String

The invalid hash value, exactly as found in the entry.

§

Io(Error)

Underlying I/O failure — a plain failure to open/read/write a path, before any catalog-specific logic ever inspects the bytes.

Trait Implementations§

Source§

impl Debug for CatalogError

Source§

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

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

impl Display for CatalogError

Source§

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

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

impl Error for CatalogError

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<CatalogError> for PipelineError

Source§

fn from(source: CatalogError) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for CatalogError

Source§

fn from(source: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

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

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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 = Infallible

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.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more