about summary refs log tree commit diff
path: root/src/liballoc
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-01-01 06:36:24 +0000
committerbors <bors@rust-lang.org>2015-01-01 06:36:24 +0000
commitc594959cdff07b5545747809bb045bfa2868ebcc (patch)
tree513aa126d93284020db5f97fd32ed45b0e0f26af /src/liballoc
parent47b8479e73e40395f1b1b2d0c6281f28f80301e4 (diff)
parentf0976e2cf3f6b0027f118b791e0888b29fbb41a7 (diff)
downloadrust-c594959cdff07b5545747809bb045bfa2868ebcc.tar.gz
rust-c594959cdff07b5545747809bb045bfa2868ebcc.zip
auto merge of #19388 : nick29581/rust/rc-show, r=alexcrichto
r? @huonw or @alexcrichton

Apparently, we have previously rejected an RFC like this. However, since then we removed `{:?}` and so without this debugging gets really difficult as soon as there is a RefCell anywhere, so I believe there is more benefit to adding these impls than there was before. By using "try_borrow" we can avoid panicing in `Show` (I think).

@ huon in response to a comment in #19254: I noticed that `drop()` checks for the ptr being null, so I checked here too. Now I am checking for both, if you're confident I can change to only checking `strong()`.

Diffstat (limited to 'src/liballoc')
-rw-r--r--src/liballoc/rc.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/liballoc/rc.rs b/src/liballoc/rc.rs
index 75d4342083b..bd250938836 100644
--- a/src/liballoc/rc.rs
+++ b/src/liballoc/rc.rs
@@ -719,6 +719,13 @@ impl<T> Clone for Weak<T> {
     }
 }
 
+#[experimental = "Show is experimental."]
+impl<T: fmt::Show> fmt::Show for Weak<T> {
+    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
+        write!(f, "(Weak)")
+    }
+}
+
 #[doc(hidden)]
 trait RcBoxPtr<T> {
     fn inner(&self) -> &RcBox<T>;