diff --git a/library/core/src/ptr/metadata.rs b/library/core/src/ptr/metadata.rs
index 7f9d8e677d2..9b5da935e07 100644
--- a/library/core/src/ptr/metadata.rs
+++ b/library/core/src/ptr/metadata.rs
@@ -57,7 +57,7 @@ pub trait Pointee {
// NOTE: Keep trait bounds in `static_assert_expected_bounds_for_metadata`
// in `library/core/src/ptr/metadata.rs`
// in sync with those here:
- type Metadata: Copy + Send + Sync + Ord + Hash + Unpin;
+ type Metadata: fmt::Debug + Copy + Send + Sync + Ord + Hash + Unpin;
}
/// Pointers to types implementing this trait alias are “thin”.
diff --git a/library/core/tests/ptr.rs b/library/core/tests/ptr.rs
index 5c518e2d593..f0656f997fd 100644
--- a/library/core/tests/ptr.rs
+++ b/library/core/tests/ptr.rs
@@ -841,11 +841,19 @@ fn ptr_metadata_bounds() {
fn static_assert_expected_bounds_for_metadata()
where
// Keep this in sync with the associated type in `library/core/src/ptr/metadata.rs`
- Meta: Copy + Send + Sync + Ord + std::hash::Hash + Unpin,
+ Meta: Debug + Copy + Send + Sync + Ord + std::hash::Hash + Unpin,
{
}
}
+#[test]
+fn pointee_metadata_debug() {
+ assert_eq!("()", format!("{:?}", metadata::(&17)));
+ assert_eq!("2", format!("{:?}", metadata::<[u32]>(&[19, 23])));
+ let for_dyn = format!("{:?}", metadata::(&29));
+ assert!(for_dyn.starts_with("DynMetadata(0x"), "{:?}", for_dyn);
+}
+
#[test]
fn dyn_metadata() {
#[derive(Debug)]