wiwi_memory_usage/impls/
slice.rs1use crate::MemoryUsage;
2use crate::macros::impl_memory_usage;
3
4impl_memory_usage! {
5 { T: MemoryUsage }
6 { T: [const] MemoryUsage }
7 dyn [T]
9 |self| {
10 self.iter().map(T::memory_usage).sum()
12 };
13 compacted |self| self.iter().map(T::memory_usage_compacted).sum();
14 compact |self| self.iter_mut().map(T::compact_memory).sum();
15 ref compacted |self| self.iter().map(T::memory_usage_compacted_ref).sum();
16 ref compact |self| self.iter().map(T::compact_memory_ref).sum();
17}
18
19#[cfg(test)]
20mod tests {
21 use super::*;
22 use crate::MemoryUsageStatic as _;
23
24 #[test]
25 fn slice_usage() {
26 let str_size = usize::MEMORY_USAGE + <*const ()>::MEMORY_USAGE;
27
28 let slice = &[1u8, 2, 3, 4, 5] as &[_];
29
30 assert_eq!((*slice).memory_usage(), 5);
31
32 let slice = &["1", "12", "123"] as &[_];
33 let expected = (3 * str_size) + 1 + 2 + 3;
34
35 assert_eq!((*slice).memory_usage(), expected);
36 }
37}