mirror of
https://github.com/rust-lang/rust
synced 2024-10-14 04:23:37 +00:00
Implement Debug
for RwLock
, arc::Weak
and Mutex
This commit is contained in:
parent
522d09dfec
commit
36ba96ea3c
|
@ -139,6 +139,13 @@ pub struct Weak<T> {
|
||||||
unsafe impl<T: Sync + Send> Send for Weak<T> { }
|
unsafe impl<T: Sync + Send> Send for Weak<T> { }
|
||||||
unsafe impl<T: Sync + Send> Sync for Weak<T> { }
|
unsafe impl<T: Sync + Send> Sync for Weak<T> { }
|
||||||
|
|
||||||
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
impl<T: fmt::Debug> fmt::Debug for Weak<T> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
write!(f, "(Weak)")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct ArcInner<T> {
|
struct ArcInner<T> {
|
||||||
strong: atomic::AtomicUsize,
|
strong: atomic::AtomicUsize,
|
||||||
weak: atomic::AtomicUsize,
|
weak: atomic::AtomicUsize,
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
use ops::{Deref, DerefMut};
|
use ops::{Deref, DerefMut};
|
||||||
use sync::poison::{self, TryLockError, TryLockResult, LockResult};
|
use sync::poison::{self, TryLockError, TryLockResult, LockResult};
|
||||||
use sys_common::mutex as sys;
|
use sys_common::mutex as sys;
|
||||||
|
use fmt;
|
||||||
|
|
||||||
/// A mutual exclusion primitive useful for protecting shared data
|
/// A mutual exclusion primitive useful for protecting shared data
|
||||||
///
|
///
|
||||||
|
@ -252,6 +253,19 @@ fn drop(&mut self) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
impl<T: fmt::Debug + Send + 'static> fmt::Debug for Mutex<T> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match self.try_lock() {
|
||||||
|
Ok(guard) => write!(f, "Mutex {{ data: {:?} }}", *guard),
|
||||||
|
Err(TryLockError::Poisoned(err)) => {
|
||||||
|
write!(f, "Mutex {{ data: Poisoned({:?}) }}", **err.get_ref())
|
||||||
|
},
|
||||||
|
Err(TryLockError::WouldBlock) => write!(f, "Mutex {{ <locked> }}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Dummy(UnsafeCell<()>);
|
struct Dummy(UnsafeCell<()>);
|
||||||
unsafe impl Sync for Dummy {}
|
unsafe impl Sync for Dummy {}
|
||||||
static DUMMY: Dummy = Dummy(UnsafeCell { value: () });
|
static DUMMY: Dummy = Dummy(UnsafeCell { value: () });
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
use ops::{Deref, DerefMut};
|
use ops::{Deref, DerefMut};
|
||||||
use sync::poison::{self, LockResult, TryLockError, TryLockResult};
|
use sync::poison::{self, LockResult, TryLockError, TryLockResult};
|
||||||
use sys_common::rwlock as sys;
|
use sys_common::rwlock as sys;
|
||||||
|
use fmt;
|
||||||
|
|
||||||
/// A reader-writer lock
|
/// A reader-writer lock
|
||||||
///
|
///
|
||||||
|
@ -258,6 +259,19 @@ fn drop(&mut self) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
|
impl<T: fmt::Debug + Send + Sync> fmt::Debug for RwLock<T> {
|
||||||
|
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||||
|
match self.try_read() {
|
||||||
|
Ok(guard) => write!(f, "RwLock {{ data: {:?} }}", *guard),
|
||||||
|
Err(TryLockError::Poisoned(err)) => {
|
||||||
|
write!(f, "RwLock {{ data: Poisoned({:?}) }}", **err.get_ref())
|
||||||
|
},
|
||||||
|
Err(TryLockError::WouldBlock) => write!(f, "RwLock {{ <locked> }}")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct Dummy(UnsafeCell<()>);
|
struct Dummy(UnsafeCell<()>);
|
||||||
unsafe impl Sync for Dummy {}
|
unsafe impl Sync for Dummy {}
|
||||||
static DUMMY: Dummy = Dummy(UnsafeCell { value: () });
|
static DUMMY: Dummy = Dummy(UnsafeCell { value: () });
|
||||||
|
|
Loading…
Reference in a new issue