pub enum PipelineError {
Validation(ValidationError),
PHash(PHashError),
Kdf(KdfError),
Expand(ExpandError),
Cost(CostError),
Sizer(SizerError),
Stc(StcError),
Crypto(CryptoError),
Output(OutputError),
}Expand description
Everything that can go wrong between a plaintext and a stego image.
The variants follow the order the layers run in, which is also the order in which a caller will meet them.
Variants§
Validation(ValidationError)
The container image failed a validation gate of layer 1.
PHash(PHashError)
The container’s perceptual hash is not reproducible, or the salt of a stego image could not be recovered.
Kdf(KdfError)
Argon2id password stretching failed.
Expand(ExpandError)
HKDF-SHA3-512 expansion of the master key failed.
Cost(CostError)
The cost layer refused the container.
Sizer(SizerError)
The payload does not fit in the container.
Stc(StcError)
The Syndrome-Trellis coder refused the operation.
Crypto(CryptoError)
Compression, encryption or authentication failed.
Output(OutputError)
The stego image could not be written to disk.
Trait Implementations§
Source§impl Debug for PipelineError
impl Debug for PipelineError
Source§impl Display for PipelineError
impl Display for PipelineError
Source§fn fmt(&self, f: &mut Formatter<'_>) -> Result
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Delegates to the wrapped error.
No prefix is added. The lower layers already phrase their messages for a user — “the message does not fit in this image”, “choose a container with more texture” — and wrapping them in “pipeline error: …” would only push the actionable part of the sentence further from the start of the line.
Source§impl Error for PipelineError
impl Error for PipelineError
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
use the Display impl or to_string()
Source§impl From<CostError> for PipelineError
impl From<CostError> for PipelineError
Source§impl From<CryptoError> for PipelineError
impl From<CryptoError> for PipelineError
Source§fn from(err: CryptoError) -> Self
fn from(err: CryptoError) -> Self
Source§impl From<ExpandError> for PipelineError
impl From<ExpandError> for PipelineError
Source§fn from(err: ExpandError) -> Self
fn from(err: ExpandError) -> Self
Source§impl From<KdfError> for PipelineError
impl From<KdfError> for PipelineError
Source§impl From<OutputError> for PipelineError
impl From<OutputError> for PipelineError
Source§fn from(err: OutputError) -> Self
fn from(err: OutputError) -> Self
Source§impl From<PHashError> for PipelineError
impl From<PHashError> for PipelineError
Source§fn from(err: PHashError) -> Self
fn from(err: PHashError) -> Self
Source§impl From<SizerError> for PipelineError
impl From<SizerError> for PipelineError
Source§fn from(err: SizerError) -> Self
fn from(err: SizerError) -> Self
Source§impl From<StcError> for PipelineError
impl From<StcError> for PipelineError
Source§impl From<ValidationError> for PipelineError
impl From<ValidationError> for PipelineError
Source§fn from(err: ValidationError) -> Self
fn from(err: ValidationError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for PipelineError
impl !UnwindSafe for PipelineError
impl Freeze for PipelineError
impl Send for PipelineError
impl Sync for PipelineError
impl Unpin for PipelineError
impl UnsafeUnpin for PipelineError
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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