build_fs_tree/build/
error.rs1use derive_more::{Display, Error};
2use std::fmt::{self, Debug, Formatter};
3
4#[derive(Debug, Display, Error)]
6#[display("{operation} {path:?}: {error}")]
7#[display(bound(Path: Debug, Error: Display))]
8pub struct BuildError<Path, Error> {
9 pub operation: FailedOperation,
11 pub path: Path,
13 pub error: Error,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq)]
19pub enum FailedOperation {
20 WriteFile,
22 CreateDir,
24}
25
26impl FailedOperation {
27 pub const fn name(self) -> &'static str {
29 use FailedOperation::*;
30 match self {
31 WriteFile => "write_file",
32 CreateDir => "create_dir",
33 }
34 }
35}
36
37impl fmt::Display for FailedOperation {
38 fn fmt(&self, formatter: &mut Formatter<'_>) -> Result<(), fmt::Error> {
39 write!(formatter, "{}", self.name())
40 }
41}