blob: 92e9336b6ebd6514f305b07cc2abaf4df5aaea90 [file] [log] [blame]
//! The error types defined by this crate.
#![allow(clippy::derive_partial_eq_without_eq)]
use std::error::Error;
use std::fmt;
use std::fmt::Display;
use std::fmt::Formatter;
use std::path::Path;
use std::path::PathBuf;
/// The error returned when [`BasePath::try_new`] is given a path without a
/// prefix.
///
/// [`BasePath::try_new`]: super::BasePath::try_new
#[derive(Clone, Debug, PartialEq)]
pub struct MissingPrefixError(pub(super) ());
impl Display for MissingPrefixError {
#[inline]
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
"path is missing a prefix".fmt(f)
}
}
impl Error for MissingPrefixError {}
/// The error returned when [`BasePathBuf::try_new`] is given a path without a
/// prefix.
///
/// [`BasePathBuf::try_new`]: super::BasePathBuf::try_new
#[derive(Clone, Debug, PartialEq)]
pub struct MissingPrefixBufError(pub(super) PathBuf);
impl MissingPrefixBufError {
/// Returns a reference to the path that caused this error.
#[inline]
#[must_use]
pub fn as_path(&self) -> &Path {
&self.0
}
/// Returns the path that caused this error.
#[inline]
#[must_use]
pub fn into_path_buf(self) -> PathBuf {
self.0
}
}
impl Display for MissingPrefixBufError {
#[inline]
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
write!(f, "path is missing a prefix: \"{}\"", self.0.display())
}
}
impl Error for MissingPrefixBufError {}
/// The error returned when [`BasePath::parent`] cannot remove the path's last
/// component.
///
/// [`BasePath::parent`]: super::BasePath::parent
#[derive(Clone, Debug, PartialEq)]
pub struct ParentError(pub(super) ());
impl Display for ParentError {
#[inline]
fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
"cannot remove the path's last component".fmt(f)
}
}
impl Error for ParentError {}