Implement Show for Arc<T>

Fixes https://github.com/rust-lang/rust/issues/18299
This commit is contained in:
Adolfo Ochagavía 2014-10-26 12:58:04 +01:00
parent cb943b7d2b
commit 79e05e9995

View File

@ -15,6 +15,7 @@
use core::atomic;
use core::clone::Clone;
use core::fmt::{mod, Show};
use core::kinds::{Sync, Send};
use core::mem::{min_align_of, size_of, drop};
use core::mem;
@ -147,6 +148,12 @@ impl<T: Send + Sync> Deref<T> for Arc<T> {
}
}
impl<T: Send + Sync + Show> Show for Arc<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
(**self).fmt(f)
}
}
impl<T: Send + Sync + Clone> Arc<T> {
/// Acquires a mutable pointer to the inner contents by guaranteeing that
/// the reference count is one (no sharing is possible).
@ -280,6 +287,7 @@ mod tests {
use std::mem::drop;
use std::ops::Drop;
use std::option::{Option, Some, None};
use std::str::Str;
use std::sync::atomic;
use std::task;
use std::vec::Vec;
@ -426,4 +434,10 @@ mod tests {
assert!(canary.load(atomic::Acquire) == 1);
drop(arc_weak);
}
#[test]
fn show_arc() {
let a = Arc::new(5u32);
assert!(format!("{}", a).as_slice() == "5")
}
}