diff --git a/src/libstd/sync/mpsc/mod.rs b/src/libstd/sync/mpsc/mod.rs index e87ae19c583f7..e2c900f3af0f1 100644 --- a/src/libstd/sync/mpsc/mod.rs +++ b/src/libstd/sync/mpsc/mod.rs @@ -635,6 +635,13 @@ impl Drop for Sender { } } +#[stable(feature = "mpsc_debug", since = "1.7.0")] +impl fmt::Debug for Sender { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Sender {{ .. }}") + } +} + //////////////////////////////////////////////////////////////////////////////// // SyncSender //////////////////////////////////////////////////////////////////////////////// @@ -693,6 +700,13 @@ impl Drop for SyncSender { } } +#[stable(feature = "mpsc_debug", since = "1.7.0")] +impl fmt::Debug for SyncSender { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "SyncSender {{ .. }}") + } +} + //////////////////////////////////////////////////////////////////////////////// // Receiver //////////////////////////////////////////////////////////////////////////////// @@ -987,6 +1001,13 @@ impl Drop for Receiver { } } +#[stable(feature = "mpsc_debug", since = "1.7.0")] +impl fmt::Debug for Receiver { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Receiver {{ .. }}") + } +} + #[stable(feature = "rust1", since = "1.0.0")] impl fmt::Debug for SendError { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { @@ -2199,4 +2220,22 @@ mod sync_tests { repro() } } + + #[test] + fn fmt_debug_sender() { + let (tx, _) = channel::(); + assert_eq!(format!("{:?}", tx), "Sender { .. }"); + } + + #[test] + fn fmt_debug_recv() { + let (_, rx) = channel::(); + assert_eq!(format!("{:?}", rx), "Receiver { .. }"); + } + + #[test] + fn fmt_debug_sync_sender() { + let (tx, _) = sync_channel::(1); + assert_eq!(format!("{:?}", tx), "SyncSender { .. }"); + } } diff --git a/src/libstd/sync/mpsc/select.rs b/src/libstd/sync/mpsc/select.rs index cc068fd1dea55..d743cbb18909f 100644 --- a/src/libstd/sync/mpsc/select.rs +++ b/src/libstd/sync/mpsc/select.rs @@ -58,6 +58,8 @@ issue = "27800")] +use fmt; + use core::cell::{Cell, UnsafeCell}; use core::marker; use core::ptr; @@ -350,6 +352,20 @@ impl Iterator for Packets { } } +#[stable(feature = "mpsc_debug", since = "1.7.0")] +impl fmt::Debug for Select { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Select {{ .. }}") + } +} + +#[stable(feature = "mpsc_debug", since = "1.7.0")] +impl<'rx, T:Send+'rx> fmt::Debug for Handle<'rx, T> { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + write!(f, "Handle {{ .. }}") + } +} + #[cfg(test)] #[allow(unused_imports)] mod tests { @@ -762,4 +778,18 @@ mod tests { } } } + + #[test] + fn fmt_debug_select() { + let sel = Select::new(); + assert_eq!(format!("{:?}", sel), "Select { .. }"); + } + + #[test] + fn fmt_debug_handle() { + let (_, rx) = channel::(); + let sel = Select::new(); + let mut handle = sel.handle(&rx); + assert_eq!(format!("{:?}", handle), "Handle { .. }"); + } }