diff --git a/src/libstd/to_str.rs b/src/libstd/to_str.rs index 87d59f0979194..ab14e9f566778 100644 --- a/src/libstd/to_str.rs +++ b/src/libstd/to_str.rs @@ -40,17 +40,6 @@ impl ToStr for () { fn to_str(&self) -> ~str { ~"()" } } -impl ToStr for (A,) { - #[inline] - fn to_str(&self) -> ~str { - match *self { - (ref a,) => { - format!("({},)", (*a).to_str()) - } - } - } -} - impl ToStr for HashMap { #[inline] fn to_str(&self) -> ~str { @@ -91,36 +80,6 @@ impl ToStr for HashSet { } } -impl ToStr for (A, B) { - #[inline] - fn to_str(&self) -> ~str { - // FIXME(#4653): this causes an llvm assertion - //let &(ref a, ref b) = self; - match *self { - (ref a, ref b) => { - format!("({}, {})", (*a).to_str(), (*b).to_str()) - } - } - } -} - -impl ToStr for (A, B, C) { - #[inline] - fn to_str(&self) -> ~str { - // FIXME(#4653): this causes an llvm assertion - //let &(ref a, ref b, ref c) = self; - match *self { - (ref a, ref b, ref c) => { - format!("({}, {}, {})", - (*a).to_str(), - (*b).to_str(), - (*c).to_str() - ) - } - } - } -} - impl<'a,A:ToStr> ToStr for &'a [A] { #[inline] fn to_str(&self) -> ~str { @@ -178,13 +137,6 @@ mod tests { assert_eq!((~"hi").to_str(), ~"hi"); } - #[test] - fn test_tuple_types() { - assert_eq!((1, 2).to_str(), ~"(1, 2)"); - assert_eq!((~"a", ~"b", false).to_str(), ~"(a, b, false)"); - assert_eq!(((), ((), 100)).to_str(), ~"((), ((), 100))"); - } - #[test] fn test_vectors() { let x: ~[int] = ~[]; diff --git a/src/libstd/tuple.rs b/src/libstd/tuple.rs index 9a1fda07ecd5e..f2d1144f281ee 100644 --- a/src/libstd/tuple.rs +++ b/src/libstd/tuple.rs @@ -17,6 +17,7 @@ use clone::Clone; #[cfg(not(test))] use default::Default; use fmt; use result::{Ok, Err}; +use to_str::ToStr; /// Method extensions to pairs where both types satisfy the `Clone` bound pub trait CloneableTuple { @@ -179,6 +180,12 @@ macro_rules! tuple_impls { } } + impl<$($T: fmt::Show),+> ToStr for ($($T,)+) { + fn to_str(&self) -> ~str { + format!("{}", *self) + } + } + impl<$($T: fmt::Show),+> fmt::Show for ($($T,)+) { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { write_tuple!(f.buf, $(self.$get_ref_fn()),+)