/// ```
#[rustc_on_unimplemented(
on(
- _Self = "std::path::Path",
+ any(_Self = "std::path::Path", _Self = "std::path::PathBuf"),
label = "`{Self}` cannot be formatted with the default formatter; call `.display()` on it",
note = "call `.display()` or `.to_string_lossy()` to safely print paths, \
as they may contain non-Unicode data"
-use std::path::Path;
+use std::path::{Path, PathBuf};
fn main() {
let path = Path::new("/tmp/foo/bar.txt");
println!("{}", path);
//~^ ERROR E0277
+
+ let path = PathBuf::from("/tmp/foo/bar.txt");
+ println!("{}", path);
+ //~^ ERROR E0277
}
= note: call `.display()` or `.to_string_lossy()` to safely print paths, as they may contain non-Unicode data
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
-error: aborting due to previous error
+error[E0277]: `PathBuf` doesn't implement `std::fmt::Display`
+ --> $DIR/path-display.rs:9:20
+ |
+LL | println!("{}", path);
+ | ^^^^ `PathBuf` cannot be formatted with the default formatter; call `.display()` on it
+ |
+ = help: the trait `std::fmt::Display` is not implemented for `PathBuf`
+ = note: call `.display()` or `.to_string_lossy()` to safely print paths, as they may contain non-Unicode data
+ = note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 2 previous errors
For more information about this error, try `rustc --explain E0277`.