@@ -14,15 +14,15 @@ use typesize::TypeSize;
1414/// A wrapper around Option<DashMap<K, V>> to ease disabling specific cache fields.
1515pub ( crate ) struct MaybeMap < K : Eq + Hash , V > ( pub ( super ) Option < DashMap < K , V , BuildHasher > > ) ;
1616impl < K : Eq + Hash , V > MaybeMap < K , V > {
17- pub fn iter ( & self ) -> impl Iterator < Item = RefMulti < ' _ , K , V , BuildHasher > > {
17+ pub fn iter ( & self ) -> impl Iterator < Item = RefMulti < ' _ , K , V > > {
1818 Option :: iter ( & self . 0 ) . flat_map ( DashMap :: iter)
1919 }
2020
21- pub fn get ( & self , k : & K ) -> Option < Ref < ' _ , K , V , BuildHasher > > {
21+ pub fn get ( & self , k : & K ) -> Option < Ref < ' _ , K , V > > {
2222 self . 0 . as_ref ( ) ?. get ( k)
2323 }
2424
25- pub fn get_mut ( & self , k : & K ) -> Option < RefMut < ' _ , K , V , BuildHasher > > {
25+ pub fn get_mut ( & self , k : & K ) -> Option < RefMut < ' _ , K , V > > {
2626 self . 0 . as_ref ( ) ?. get_mut ( k)
2727 }
2828
@@ -59,8 +59,10 @@ impl<K: Eq + Hash + TypeSize, V: TypeSize> TypeSize for MaybeMap<K, V> {
5959 self . 0 . as_ref ( ) . map ( DashMap :: extra_size) . unwrap_or_default ( )
6060 }
6161
62- fn get_collection_item_count ( & self ) -> Option < usize > {
63- self . 0 . as_ref ( ) . and_then ( DashMap :: get_collection_item_count)
62+ typesize:: if_typesize_details! {
63+ fn get_collection_item_count( & self ) -> Option <usize > {
64+ self . 0 . as_ref( ) . and_then( DashMap :: get_collection_item_count)
65+ }
6466 }
6567}
6668
@@ -69,11 +71,11 @@ impl<K: Eq + Hash + TypeSize, V: TypeSize> TypeSize for MaybeMap<K, V> {
6971/// map without allowing mutation of internal cache fields, which could cause issues.
7072pub struct ReadOnlyMapRef < ' a , K : Eq + Hash , V > ( Option < & ' a DashMap < K , V , BuildHasher > > ) ;
7173impl < ' a , K : Eq + Hash , V > ReadOnlyMapRef < ' a , K , V > {
72- pub fn iter ( & self ) -> impl Iterator < Item = RefMulti < ' _ , K , V , BuildHasher > > {
74+ pub fn iter ( & self ) -> impl Iterator < Item = RefMulti < ' _ , K , V > > {
7375 self . 0 . into_iter ( ) . flat_map ( DashMap :: iter)
7476 }
7577
76- pub fn get ( & self , k : & K ) -> Option < Ref < ' _ , K , V , BuildHasher > > {
78+ pub fn get ( & self , k : & K ) -> Option < Ref < ' _ , K , V > > {
7779 self . 0 ?. get ( k)
7880 }
7981
@@ -91,6 +93,10 @@ impl std::hash::Hasher for Hasher {
9193 self . 0 . write ( bytes) ;
9294 }
9395}
96+
97+ #[ cfg( feature = "typesize" ) ]
98+ impl typesize:: TypeSize for Hasher { }
99+
94100#[ derive( Clone , Default ) ]
95101pub struct BuildHasher ( fxhash:: FxBuildHasher ) ;
96102impl std:: hash:: BuildHasher for BuildHasher {
@@ -101,6 +107,9 @@ impl std::hash::BuildHasher for BuildHasher {
101107 }
102108}
103109
110+ #[ cfg( feature = "typesize" ) ]
111+ impl typesize:: TypeSize for BuildHasher { }
112+
104113/// Wrapper around `SizableArc<T, Owned>`` with support for disabling typesize.
105114///
106115/// This denotes an Arc where T's size should be considered when calling `TypeSize::get_size`
0 commit comments