get_size2/impls/core_impls/
wrappers.rs1use core::cell::RefCell;
2
3use crate::{GetSize, GetSizeTracker};
4
5impl<T> GetSize for Option<T>
6where
7 T: GetSize,
8{
9 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
10 match self {
11 None => (0, tracker),
12 Some(value) => T::get_heap_size_with_tracker(value, tracker),
13 }
14 }
15}
16
17impl<T, E> GetSize for Result<T, E>
18where
19 T: GetSize,
20 E: GetSize,
21{
22 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
23 match self {
25 Ok(value) => T::get_heap_size_with_tracker(value, tracker),
26 Err(err) => E::get_heap_size_with_tracker(err, tracker),
27 }
28 }
29}
30
31impl<T> GetSize for RefCell<T>
32where
33 T: GetSize,
34{
35 fn get_heap_size_with_tracker<Tr: GetSizeTracker>(&self, tracker: Tr) -> (usize, Tr) {
36 match self.try_borrow() {
39 Ok(borrowed) => T::get_heap_size_with_tracker(&*borrowed, tracker),
40 Err(_) => {
41 (0, tracker)
44 }
45 }
46 }
47}