pub struct SyncHashMap<K, V> { /* private fields */ }Expand description
同步哈希映射,支持多读少写的场景 this sync map used to many reader, writer less. space-for-time strategy
Implementations§
Source§impl<K, V> SyncHashMap<K, V>
impl<K, V> SyncHashMap<K, V>
Sourcepub fn with_capacity(capacity: usize) -> Self
pub fn with_capacity(capacity: usize) -> Self
使用指定容量创建一个新的映射
Sourcepub fn insert_mut(&mut self, k: K, v: V) -> Option<V>
pub fn insert_mut(&mut self, k: K, v: V) -> Option<V>
可变引用下的插入操作,无锁保护(调用者需确保线程安全)
Sourcepub fn remove_mut(&mut self, k: &K) -> Option<V>
pub fn remove_mut(&mut self, k: &K) -> Option<V>
可变引用下的移除操作,无锁保护(调用者需确保线程安全)
Sourcepub fn shrink_to_fit(&self)
pub fn shrink_to_fit(&self)
收缩容量以适应元素数量,使用写锁保护
Sourcepub fn shrink_to_fit_mut(&mut self)
pub fn shrink_to_fit_mut(&mut self)
可变引用下的收缩容量操作,无锁保护(调用者需确保线程安全)
Sourcepub fn get_uncheck<Q>(&self, k: &Q) -> ReadGuard<'_, V>
pub fn get_uncheck<Q>(&self, k: &Q) -> ReadGuard<'_, V>
Sourcepub fn get_mut<Q>(&self, k: &Q) -> Option<WriteGuard<'_, V>>
pub fn get_mut<Q>(&self, k: &Q) -> Option<WriteGuard<'_, V>>
获取键对应的可变值引用,使用写锁保护
返回一个 WriteGuard,在 guard 被释放前持有写锁,保证并发访问安全。
Sourcepub fn contains_key<Q>(&self, k: &Q) -> bool
pub fn contains_key<Q>(&self, k: &Q) -> bool
检查是否包含指定的键,使用读锁保护
Sourcepub fn dirty_ref(&self) -> ReadGuardMap<'_, K, V>
pub fn dirty_ref(&self) -> ReadGuardMap<'_, K, V>
获取底层HashMap的只读引用,使用读锁保护
返回一个 ReadGuardMap,在 guard 被释放前持有读锁。
Sourcepub unsafe fn dirty_ref_unsafe(&self) -> &HashMap<K, V>
pub unsafe fn dirty_ref_unsafe(&self) -> &HashMap<K, V>
Sourcepub fn into_inner(self) -> HashMap<K, V>
pub fn into_inner(self) -> HashMap<K, V>
消耗self并返回内部的HashMap
Sourcepub fn values(&self) -> ValuesGuard<'_, K, V> ⓘ
pub fn values(&self) -> ValuesGuard<'_, K, V> ⓘ
获取值的只读迭代器,使用读锁保护
返回的迭代器持有读锁,在迭代期间保证数据不被修改。
Sourcepub fn values_mut(&self) -> ValuesMutGuard<'_, K, V> ⓘ
pub fn values_mut(&self) -> ValuesMutGuard<'_, K, V> ⓘ
获取值的可变迭代器,使用写锁保护
返回的迭代器持有写锁,在迭代期间保证独占访问。
Sourcepub fn remove_entry(&self, k: &K) -> Option<(K, V)>
pub fn remove_entry(&self, k: &K) -> Option<(K, V)>
尝试移除键值对,如果键存在则返回被移除的值,使用写锁保护
Sourcepub fn get_or_insert(&self, k: K, default: V) -> WriteGuard<'_, V>
pub fn get_or_insert(&self, k: K, default: V) -> WriteGuard<'_, V>
如果键存在则返回其可变引用,否则插入新值,使用写锁保护
返回一个 WriteGuard,在 guard 被释放前持有写锁,保证并发访问安全。
Sourcepub fn get_or_insert_with<F>(&self, k: K, default: F) -> WriteGuard<'_, V>where
F: FnOnce() -> V,
pub fn get_or_insert_with<F>(&self, k: K, default: F) -> WriteGuard<'_, V>where
F: FnOnce() -> V,
如果键存在则返回其可变引用,否则使用函数返回值插入,使用写锁保护
返回一个 WriteGuard,在 guard 被释放前持有写锁,保证并发访问安全。
Trait Implementations§
Source§impl<K, V> Clone for SyncHashMap<K, V>
impl<K, V> Clone for SyncHashMap<K, V>
Source§impl<K, V> Debug for SyncHashMap<K, V>
impl<K, V> Debug for SyncHashMap<K, V>
Source§impl<K, V> Default for SyncHashMap<K, V>
impl<K, V> Default for SyncHashMap<K, V>
Source§impl<'de, K, V> Deserialize<'de> for SyncHashMap<K, V>
impl<'de, K, V> Deserialize<'de> for SyncHashMap<K, V>
Source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
Source§impl<K, V> From<HashMap<K, V>> for SyncHashMap<K, V>
impl<K, V> From<HashMap<K, V>> for SyncHashMap<K, V>
Source§impl<K, V> Index<&K> for SyncHashMap<K, V>
索引操作,无锁访问
impl<K, V> Index<&K> for SyncHashMap<K, V>
索引操作,无锁访问
§Safety
此操作不持有锁,仅应在确保没有并发写入时使用。
如需线程安全访问,请使用 get 方法。
Source§impl<'a, K, V> IntoIterator for &'a SyncHashMap<K, V>
impl<'a, K, V> IntoIterator for &'a SyncHashMap<K, V>
Source§impl<K, V> IntoIterator for SyncHashMap<K, V>
impl<K, V> IntoIterator for SyncHashMap<K, V>
Source§impl<K, V> PartialEq for SyncHashMap<K, V>
impl<K, V> PartialEq for SyncHashMap<K, V>
Source§impl<K, V> Serialize for SyncHashMap<K, V>
impl<K, V> Serialize for SyncHashMap<K, V>
impl<K, V> Eq for SyncHashMap<K, V>
impl<K, V> Send for SyncHashMap<K, V>
标记为Send,因为使用了UnsafeCell但有锁保护 this is safety, dirty mutex ensure
impl<K, V> Sync for SyncHashMap<K, V>
标记为Sync,因为使用了UnsafeCell但有锁保护 this is safety, dirty mutex ensure
Auto Trait Implementations§
impl<K, V> !Freeze for SyncHashMap<K, V>
impl<K, V> !RefUnwindSafe for SyncHashMap<K, V>
impl<K, V> Unpin for SyncHashMap<K, V>
impl<K, V> UnwindSafe for SyncHashMap<K, V>where
K: UnwindSafe,
V: UnwindSafe,
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
clone_to_uninit)