mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 10:45:18 +00:00
Delegate ToStr implementation to Show for tuples
This commit is contained in:
parent
bf6abf8cb3
commit
6f39eb1a56
@ -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 {
|
||||
@ -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 {
|
||||
@ -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] = ~[];
|
||||
|
@ -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> {
|
||||
@ -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()),+)
|
||||
|
Loading…
Reference in New Issue
Block a user