get_size2/impls/feature/
parking_lot.rs1use crate::{GetSize, GetSizeTracker};
2
3impl<T> GetSize for parking_lot::Mutex<T>
8where
9 T: GetSize,
10{
11 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
12 let guard = self.lock();
13 T::get_heap_size_with_tracker(&*guard, tracker)
14 }
15}
16
17impl<T> GetSize for parking_lot::RwLock<T>
18where
19 T: GetSize,
20{
21 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
22 let guard = self.read();
23 T::get_heap_size_with_tracker(&*guard, tracker)
24 }
25}
26
27impl<T: GetSizeTracker> GetSizeTracker for parking_lot::Mutex<T> {
33 fn track<A>(&mut self, addr: *const A) -> bool {
34 GetSizeTracker::track(self.get_mut(), addr)
35 }
36}
37
38impl<T: GetSizeTracker> GetSizeTracker for parking_lot::RwLock<T> {
39 fn track<A>(&mut self, addr: *const A) -> bool {
40 GetSizeTracker::track(self.get_mut(), addr)
41 }
42}
43
44impl<T: GetSizeTracker> GetSizeTracker for std::sync::Arc<parking_lot::Mutex<T>> {
45 fn track<A>(&mut self, addr: *const A) -> bool {
46 let mut guard = self.lock();
47 GetSizeTracker::track(&mut *guard, addr)
48 }
49}
50
51impl<T: GetSizeTracker> GetSizeTracker for std::sync::Arc<parking_lot::RwLock<T>> {
52 fn track<A>(&mut self, addr: *const A) -> bool {
53 let mut guard = self.write();
54 GetSizeTracker::track(&mut *guard, addr)
55 }
56}