Skip to content

Commit

Permalink
Add test of Debug and Display of paths
Browse files Browse the repository at this point in the history
DisplayDebug currently works but DebugDisplay does not.

    error[E0277]: `PathBuf` doesn't implement `std::fmt::Display`
      --> tests/test_path.rs:36:13
       |
    32 | #[derive(Error, Debug)]
       |          ----- in this derive macro expansion
    ...
    36 |     #[error("debug:{0:?} display:{0}")]
       |             ^^^^^^^^^^^^^^^^^^^^^^^^^ `PathBuf` cannot be formatted with the default formatter; call `.display()` on it
       |
       = help: the trait `std::fmt::Display` is not implemented for `PathBuf`
       = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
       = note: call `.display()` or `.to_string_lossy()` to safely print paths, as they may contain non-Unicode data
       = help: the trait `std::fmt::Display` is implemented for `Var<'_, T>`
       = note: this error originates in the macro `$crate::format_args` which comes from the expansion of the derive macro `Error` (in Nightly builds, run with -Z macro-backtrace for more info)
  • Loading branch information
dtolnay committed Nov 10, 2024
1 parent 49be39d commit 520343e
Showing 1 changed file with 8 additions and 0 deletions.
8 changes: 8 additions & 0 deletions tests/test_path.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,14 @@ pub struct UnsizedError {
pub tail: str,
}

#[derive(Error, Debug)]
pub enum BothError {
#[error("display:{0} debug:{0:?}")]
DisplayDebug(PathBuf),
#[error("debug:{0:?} display:{0}")]
DebugDisplay(PathBuf),
}

fn assert<T: Display>(expected: &str, value: T) {
assert_eq!(expected, value.to_string());
}
Expand Down

0 comments on commit 520343e

Please sign in to comment.