about summary refs log tree commit diff
path: root/src/libcore/fmt/mod.rs
diff options
context:
space:
mode:
authorMasaki Hara <ackie.h.gmai@gmail.com>2017-07-02 08:41:39 +0900
committerMasaki Hara <ackie.h.gmai@gmail.com>2017-07-02 08:41:39 +0900
commit01b6c9459ca3f7857f211aa47f8fbf3b52ed1c47 (patch)
treedbd55660eaf71e3df291dbe597677966ca0bc9f0 /src/libcore/fmt/mod.rs
parent7a2c09b6f5282335fc0000f5504fbed2f70e89c8 (diff)
downloadrust-01b6c9459ca3f7857f211aa47f8fbf3b52ed1c47.tar.gz
rust-01b6c9459ca3f7857f211aa47f8fbf3b52ed1c47.zip
Implement Eq/Hash/Debug etc. for unsized tuples.
Diffstat (limited to 'src/libcore/fmt/mod.rs')
-rw-r--r--src/libcore/fmt/mod.rs9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/libcore/fmt/mod.rs b/src/libcore/fmt/mod.rs
index bcc6d53c81d..750e86114c4 100644
--- a/src/libcore/fmt/mod.rs
+++ b/src/libcore/fmt/mod.rs
@@ -1627,13 +1627,13 @@ macro_rules! tuple {
     () => ();
     ( $($name:ident,)+ ) => (
         #[stable(feature = "rust1", since = "1.0.0")]
-        impl<$($name:Debug),*> Debug for ($($name,)*) {
+        impl<$($name:Debug),*> Debug for ($($name,)*) where last_type!($($name,)+): ?Sized {
             #[allow(non_snake_case, unused_assignments, deprecated)]
             fn fmt(&self, f: &mut Formatter) -> Result {
                 let mut builder = f.debug_tuple("");
                 let ($(ref $name,)*) = *self;
                 $(
-                    builder.field($name);
+                    builder.field(&$name);
                 )*
 
                 builder.finish()
@@ -1643,6 +1643,11 @@ macro_rules! tuple {
     )
 }
 
+macro_rules! last_type {
+    ($a:ident,) => { $a };
+    ($a:ident, $($rest_a:ident,)+) => { last_type!($($rest_a,)+) };
+}
+
 tuple! { T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, }
 
 #[stable(feature = "rust1", since = "1.0.0")]