use std::error::Error;
use std::fmt::Debug;
use std::fmt::Display;
use std::fmt::Formatter;
use std::fmt::Result as FmtResult;
use crate::error::FsError;
use crate::rename::RenameFailureState;
pub struct RenameFailure {
error: FsError,
state: RenameFailureState,
}
impl RenameFailure {
#[must_use]
pub(crate) const fn new(error: FsError, state: RenameFailureState) -> Self {
Self { error, state }
}
#[inline]
#[must_use]
pub const fn error(&self) -> &FsError {
&self.error
}
#[inline]
#[must_use]
pub const fn state(&self) -> RenameFailureState {
self.state
}
#[inline]
#[must_use]
pub fn into_parts(self) -> (FsError, RenameFailureState) {
(self.error, self.state)
}
}
impl Debug for RenameFailure {
#[inline]
fn fmt(&self, formatter: &mut Formatter<'_>) -> FmtResult {
formatter
.debug_struct("RenameFailure")
.field("error", &self.error)
.field("state", &self.state)
.finish()
}
}
impl Display for RenameFailure {
#[inline]
fn fmt(&self, formatter: &mut Formatter<'_>) -> FmtResult {
Display::fmt(&self.error, formatter)
}
}
impl Error for RenameFailure {
#[inline]
fn source(&self) -> Option<&(dyn Error + 'static)> {
Some(&self.error)
}
}