//! Error types. use core::fmt; /// This error is returned by the [`StreamCipher`][crate::stream::StreamCipher] /// trait methods. /// /// Usually it's used in cases when stream cipher has reached the end /// of a keystream, but also can be used if lengths of provided input /// and output buffers are not equal. #[derive(Copy, Clone, Debug)] pub struct StreamCipherError; impl fmt::Display for StreamCipherError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> { f.write_str("Loop Error") } } #[cfg(feature = "std")] #[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl std::error::Error for StreamCipherError {} /// The error type returned when a cipher position can not be represented /// by the requested type. #[derive(Copy, Clone, Debug)] pub struct OverflowError; impl fmt::Display for OverflowError { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> { f.write_str("Overflow Error") } } impl From for StreamCipherError { fn from(_: OverflowError) -> StreamCipherError { StreamCipherError } } #[cfg(feature = "std")] #[cfg_attr(docsrs, doc(cfg(feature = "std")))] impl std::error::Error for OverflowError {}