@@ -42,9 +42,27 @@ use crate::monitor::{
4242use crate :: opts:: StorageOpts ;
4343use crate :: StateStore ;
4444
45- pub type HummockStorageType = impl StateStore + AsHummock ;
46- pub type MemoryStateStoreType = impl StateStore + AsHummock ;
47- pub type SledStateStoreType = impl StateStore + AsHummock ;
45+ mod opaque_type {
46+ use super :: * ;
47+
48+ pub type HummockStorageType = impl StateStore + AsHummock ;
49+ pub type MemoryStateStoreType = impl StateStore + AsHummock ;
50+ pub type SledStateStoreType = impl StateStore + AsHummock ;
51+
52+ pub fn in_memory ( state_store : MemoryStateStore ) -> MemoryStateStoreType {
53+ may_dynamic_dispatch ( state_store)
54+ }
55+
56+ pub fn hummock ( state_store : HummockStorage ) -> HummockStorageType {
57+ may_dynamic_dispatch ( may_verify ( state_store) )
58+ }
59+
60+ pub fn sled ( state_store : SledStateStore ) -> SledStateStoreType {
61+ may_dynamic_dispatch ( state_store)
62+ }
63+ }
64+ use opaque_type:: { hummock, in_memory, sled} ;
65+ pub use opaque_type:: { HummockStorageType , MemoryStateStoreType , SledStateStoreType } ;
4866
4967/// The type erased [`StateStore`].
5068#[ derive( Clone , EnumAsInner ) ]
@@ -114,24 +132,22 @@ impl StateStoreImpl {
114132 storage_metrics : Arc < MonitoredStorageMetrics > ,
115133 ) -> Self {
116134 // The specific type of MemoryStateStoreType in deducted here.
117- Self :: MemoryStateStore ( may_dynamic_dispatch ( state_store) . monitored ( storage_metrics) )
135+ Self :: MemoryStateStore ( in_memory ( state_store) . monitored ( storage_metrics) )
118136 }
119137
120138 pub fn hummock (
121139 state_store : HummockStorage ,
122140 storage_metrics : Arc < MonitoredStorageMetrics > ,
123141 ) -> Self {
124142 // The specific type of HummockStateStoreType in deducted here.
125- Self :: HummockStateStore (
126- may_dynamic_dispatch ( may_verify ( state_store) ) . monitored ( storage_metrics) ,
127- )
143+ Self :: HummockStateStore ( hummock ( state_store) . monitored ( storage_metrics) )
128144 }
129145
130146 pub fn sled (
131147 state_store : SledStateStore ,
132148 storage_metrics : Arc < MonitoredStorageMetrics > ,
133149 ) -> Self {
134- Self :: SledStateStore ( may_dynamic_dispatch ( state_store) . monitored ( storage_metrics) )
150+ Self :: SledStateStore ( sled ( state_store) . monitored ( storage_metrics) )
135151 }
136152
137153 pub fn shared_in_memory_store ( storage_metrics : Arc < MonitoredStorageMetrics > ) -> Self {
0 commit comments