wiwi_memory_usage/impls/
option.rs1use crate::{ MemoryUsage, MemoryUsageConst };
2use crate::macros::{ impl_memory_usage, impl_memory_usage_only_const };
3
4impl_memory_usage! {
5 { T: MemoryUsage }
6 Option<T>
7 |self| match self {
8 Some(val) => {
9 let remaining = size_of::<Option<T>>() - size_of::<T>();
10 val.memory_usage() + remaining
11 }
12 None => { size_of::<Option<T>>() }
13 };
14 compacted |self| match self {
15 Some(val) => {
16 let remaining = size_of::<Option<T>>() - size_of::<T>();
17 val.memory_usage_compacted() + remaining
18 }
19 None => { size_of::<Option<T>>() }
20 };
21 compact |self| match self {
22 Some(val) => { val.compact_memory() }
23 None => { 0 }
24 };
25 ref compacted |self| match self {
26 Some(val) => {
27 let remaining = size_of::<Option<T>>() - size_of::<T>();
28 val.memory_usage_compacted_ref() + remaining
29 }
30 None => { size_of::<Option<T>>() }
31 };
32 ref compact |self| match self {
33 Some(val) => { val.compact_memory_ref() }
34 None => { 0 }
35 };
36}
37
38impl_memory_usage_only_const! {
39 { T: MemoryUsageConst }
40 { T: [const] MemoryUsageConst }
41 Option<T>
42 |self| match self {
43 Some(val) => {
44 let remaining = size_of::<Option<T>>() - size_of::<T>();
45 val.memory_usage_const() + remaining
46 }
47 None => { size_of::<Option<T>>() }
48 };
49
50}
51
52