use std::num::ParseIntError;
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum VersionError {
#[error("Empty string")]
Empty,
#[error("Require at least <major>.<minor>")]
RequireMajorMinor,
#[error("Invalid major version because {0}")]
InvalidMajorVersion(ParseIntError),
#[error("Invalid minor version because {0}")]
InvalidMinorVersion(ParseIntError),
#[error("Invalid patch version because {0}")]
InvalidPatchVersion(ParseIntError),
}
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum IdError {
#[error("Id is empty")]
Empty,
#[error("Id '{value}' is invalid because {source}")]
InvalidId {
value: String,
source: hex::FromHexError,
},
#[error("Id '{0}' is too long (maximum length is 64)")]
TooLong(String),
}
#[derive(Debug, thiserror::Error)]
#[non_exhaustive]
pub enum VolumeError {
#[error("Volume name should not been empty")]
EmptyVolumeName,
#[error(transparent)]
IOError(#[from] std::io::Error),
}