@@ -92,6 +92,8 @@ use core::ptr::copy;
92
92
use core:: ptr:: copy_nonoverlapping;
93
93
use core:: ptr:: NonNull ;
94
94
95
+ #[ cfg( feature = "malloc_size_of" ) ]
96
+ use malloc_size_of:: { MallocShallowSizeOf , MallocSizeOf , MallocSizeOfOps } ;
95
97
#[ cfg( feature = "serde" ) ]
96
98
use serde:: {
97
99
de:: { Deserialize , Deserializer , SeqAccess , Visitor } ,
@@ -2176,6 +2178,28 @@ where
2176
2178
}
2177
2179
}
2178
2180
2181
+ #[ cfg( feature = "malloc_size_of" ) ]
2182
+ impl < T , const N : usize > MallocShallowSizeOf for SmallVec < T , N > {
2183
+ fn shallow_size_of ( & self , ops : & mut MallocSizeOfOps ) -> usize {
2184
+ if self . spilled ( ) {
2185
+ unsafe { ops. malloc_size_of ( self . as_ptr ( ) ) }
2186
+ } else {
2187
+ 0
2188
+ }
2189
+ }
2190
+ }
2191
+
2192
+ #[ cfg( feature = "malloc_size_of" ) ]
2193
+ impl < T : MallocSizeOf , const N : usize > MallocSizeOf for SmallVec < T , N > {
2194
+ fn size_of ( & self , ops : & mut MallocSizeOfOps ) -> usize {
2195
+ let mut n = self . shallow_size_of ( ops) ;
2196
+ for elem in self . iter ( ) {
2197
+ n += elem. size_of ( ops) ;
2198
+ }
2199
+ n
2200
+ }
2201
+ }
2202
+
2179
2203
#[ cfg( feature = "std" ) ]
2180
2204
#[ cfg_attr( docsrs, doc( cfg( feature = "std" ) ) ) ]
2181
2205
impl < const N : usize > io:: Write for SmallVec < u8 , N > {
0 commit comments