Skip to content

Commit

Permalink
Delegate ToStr implementation to Show for tuples
Browse files Browse the repository at this point in the history
  • Loading branch information
brendanzab committed Feb 16, 2014
1 parent bf6abf8 commit 6f39eb1
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 48 deletions.
48 changes: 0 additions & 48 deletions src/libstd/to_str.rs
Expand Up @@ -40,17 +40,6 @@ impl ToStr for () {
fn to_str(&self) -> ~str { ~"()" }
}

impl<A:ToStr> ToStr for (A,) {
#[inline]
fn to_str(&self) -> ~str {
match *self {
(ref a,) => {
format!("({},)", (*a).to_str())
}
}
}
}

impl<A:ToStr+Hash+Eq, B:ToStr> ToStr for HashMap<A, B> {
#[inline]
fn to_str(&self) -> ~str {
Expand Down Expand Up @@ -91,36 +80,6 @@ impl<A:ToStr+Hash+Eq> ToStr for HashSet<A> {
}
}
impl<A:ToStr,B:ToStr> 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<A:ToStr,B:ToStr,C:ToStr> 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 {
Expand Down Expand Up @@ -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] = ~[];
Expand Down
7 changes: 7 additions & 0 deletions src/libstd/tuple.rs
Expand Up @@ -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<T, U> {
Expand Down Expand Up @@ -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()),+)
Expand Down

0 comments on commit 6f39eb1

Please sign in to comment.