#[derive(Debug)]
#[non_exhaustive]
pub enum MultiUuError {
MissingParts { expected: u32, present: Vec<u32> },
EmptyCollection,
DecodeError(uuencoding::UuError),
DuplicatePart { part_number: u32 },
}
impl std::fmt::Display for MultiUuError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
MultiUuError::MissingParts { expected, present } => write!(
f,
"missing parts: expected {} total, but only have parts {:?}",
expected, present
),
MultiUuError::EmptyCollection => {
write!(f, "reassemble() called on empty PartCollection")
}
MultiUuError::DecodeError(e) => write!(f, "UUdecode error: {}", e),
MultiUuError::DuplicatePart { part_number } => {
write!(f, "duplicate part number: {}", part_number)
}
}
}
}
impl std::error::Error for MultiUuError {}
impl From<uuencoding::UuError> for MultiUuError {
fn from(e: uuencoding::UuError) -> Self {
Self::DecodeError(e)
}
}