diff --git a/library/core/src/fmt/mod.rs b/library/core/src/fmt/mod.rs index e1ea98813031a..90c5719f486cb 100644 --- a/library/core/src/fmt/mod.rs +++ b/library/core/src/fmt/mod.rs @@ -728,7 +728,7 @@ pub use macros::Debug; /// ``` #[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" diff --git a/src/test/ui/suggestions/path-display.rs b/src/test/ui/suggestions/path-display.rs index 62fc9e79f7aa2..3a022e6b02fa4 100644 --- a/src/test/ui/suggestions/path-display.rs +++ b/src/test/ui/suggestions/path-display.rs @@ -1,7 +1,11 @@ -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 } diff --git a/src/test/ui/suggestions/path-display.stderr b/src/test/ui/suggestions/path-display.stderr index 25c73c4c8741a..5e718d79307a8 100644 --- a/src/test/ui/suggestions/path-display.stderr +++ b/src/test/ui/suggestions/path-display.stderr @@ -8,6 +8,16 @@ LL | println!("{}", path); = 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`.