mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 18:23:49 +00:00
Implement Show for Arc<T>
Fixes https://github.com/rust-lang/rust/issues/18299
This commit is contained in:
parent
cb943b7d2b
commit
79e05e9995
@ -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")
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user