pub enum SourceError {
OciUnsupported {
plugin: String,
url: String,
},
InvalidUrl {
plugin: String,
url: String,
reason: String,
},
InvalidDigest {
plugin: String,
digest: String,
reason: String,
},
CacheUnreadable {
plugin: String,
path: String,
error: String,
},
DigestMismatch {
plugin: String,
origin: &'static str,
expected: String,
actual: String,
},
SignatureRejected {
plugin: String,
reason: String,
},
DownloadFailed {
plugin: String,
url: String,
detail: String,
},
CacheWriteFailed {
plugin: String,
path: String,
error: String,
},
InvalidCachePath {
plugin: String,
path: String,
reason: String,
},
ResolutionBudgetExceeded {
plugin: String,
budget_secs: u64,
},
}Expand description
Why a source: plugin could not be resolved. Every variant names
the plugin and the exact pipeline step that failed; Display
messages are operator-facing (they reach the crashed-plugin error
string on the status surface and the publish-time log line).
Variants§
OciUnsupported
The URL uses oci://, which is not supported in this version.
InvalidUrl
The URL is not a usable https:// reference.
InvalidDigest
source.digest is not a 64-char hex SHA-256.
CacheUnreadable
The cache file exists but cannot be read (permissions, IO).
DigestMismatch
Artifact bytes do not hash to the pinned digest. origin
distinguishes the cached copy from a fresh download.
SignatureRejected
Ed25519 verification failed (bad key/sig material, wrong key, or a missing signature where the registry pins keys).
DownloadFailed
The artifact was not cached and the download failed.
CacheWriteFailed
The verified artifact could not be written to the cache.
InvalidCachePath
source.cache_path escapes the plugin cache directory. The
resolver creates directories and writes artifact bytes at the
operator-chosen path, so containment is enforced before any
lookup or download happens.
ResolutionBudgetExceeded
The per-publish resolution budget ran out before this plugin’s download could start (a hung or drip-feeding registry). The plugin fails closed; the next publish retries.
Trait Implementations§
Source§impl Clone for SourceError
impl Clone for SourceError
Source§fn clone(&self) -> SourceError
fn clone(&self) -> SourceError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SourceError
impl Debug for SourceError
Source§impl Display for SourceError
impl Display for SourceError
Source§impl Error for SourceError
impl Error for SourceError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§impl PartialEq for SourceError
impl PartialEq for SourceError
impl Eq for SourceError
impl StructuralPartialEq for SourceError
Auto Trait Implementations§
impl Freeze for SourceError
impl RefUnwindSafe for SourceError
impl Send for SourceError
impl Sync for SourceError
impl Unpin for SourceError
impl UnwindSafe for SourceError
Blanket Implementations§
§impl<T> AnyExt for T
impl<T> AnyExt for T
§fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
fn downcast_ref<T>(this: &Self) -> Option<&T>where
T: Any,
T behind reference§fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>where
T: Any,
T behind mutable reference§fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>where
T: Any,
T behind Rc pointer§fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>where
T: Any,
T behind Arc pointer§fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>where
T: Any,
T behind Box pointer§fn downcast_move<T>(this: Self) -> Option<T>
fn downcast_move<T>(this: Self) -> Option<T>
Self to T,
useful only in generic context as a workaround for specializationSource§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,
§impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
impl<T, X> CoerceTo<T> for Xwhere
T: CoerceFrom<X> + ?Sized,
fn coerce_rc_to(self: Rc<X>) -> Rc<T>
fn coerce_box_to(self: Box<X>) -> Box<T>
fn coerce_ref_to(&self) -> &T
fn coerce_mut_to(&mut self) -> &mut T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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