Skip to content

Commit 1906cb5

Browse files
committed
fix opaque type
Signed-off-by: xxchan <[email protected]>
1 parent d2c306d commit 1906cb5

File tree

1 file changed

+35
-28
lines changed

1 file changed

+35
-28
lines changed

src/storage/src/store_impl.rs

Lines changed: 35 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,41 @@ use crate::monitor::{
4242
use crate::opts::StorageOpts;
4343
use 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+
impl StateStoreImpl {
53+
pub(super) fn in_memory(
54+
state_store: MemoryStateStore,
55+
storage_metrics: Arc<MonitoredStorageMetrics>,
56+
) -> Self {
57+
// The specific type of MemoryStateStoreType in deducted here.
58+
Self::MemoryStateStore(may_dynamic_dispatch(state_store).monitored(storage_metrics))
59+
}
60+
61+
pub fn hummock(
62+
state_store: HummockStorage,
63+
storage_metrics: Arc<MonitoredStorageMetrics>,
64+
) -> Self {
65+
// The specific type of HummockStateStoreType in deducted here.
66+
Self::HummockStateStore(
67+
may_dynamic_dispatch(may_verify(state_store)).monitored(storage_metrics),
68+
)
69+
}
70+
71+
pub fn sled(
72+
state_store: SledStateStore,
73+
storage_metrics: Arc<MonitoredStorageMetrics>,
74+
) -> Self {
75+
Self::SledStateStore(may_dynamic_dispatch(state_store).monitored(storage_metrics))
76+
}
77+
}
78+
}
79+
pub use opaque_type::{HummockStorageType, MemoryStateStoreType, SledStateStoreType};
4880

4981
/// The type erased [`StateStore`].
5082
#[derive(Clone, EnumAsInner)]
@@ -109,31 +141,6 @@ fn may_verify(state_store: impl StateStore + AsHummock) -> impl StateStore + AsH
109141
}
110142

111143
impl StateStoreImpl {
112-
fn in_memory(
113-
state_store: MemoryStateStore,
114-
storage_metrics: Arc<MonitoredStorageMetrics>,
115-
) -> Self {
116-
// The specific type of MemoryStateStoreType in deducted here.
117-
Self::MemoryStateStore(may_dynamic_dispatch(state_store).monitored(storage_metrics))
118-
}
119-
120-
pub fn hummock(
121-
state_store: HummockStorage,
122-
storage_metrics: Arc<MonitoredStorageMetrics>,
123-
) -> Self {
124-
// The specific type of HummockStateStoreType in deducted here.
125-
Self::HummockStateStore(
126-
may_dynamic_dispatch(may_verify(state_store)).monitored(storage_metrics),
127-
)
128-
}
129-
130-
pub fn sled(
131-
state_store: SledStateStore,
132-
storage_metrics: Arc<MonitoredStorageMetrics>,
133-
) -> Self {
134-
Self::SledStateStore(may_dynamic_dispatch(state_store).monitored(storage_metrics))
135-
}
136-
137144
pub fn shared_in_memory_store(storage_metrics: Arc<MonitoredStorageMetrics>) -> Self {
138145
Self::in_memory(MemoryStateStore::shared(), storage_metrics)
139146
}

0 commit comments

Comments
 (0)