diff --git a/mania/src/core/cache.rs b/mania/src/core/cache.rs index 11c4c48..eed5e68 100644 --- a/mania/src/core/cache.rs +++ b/mania/src/core/cache.rs @@ -57,8 +57,11 @@ impl Cache { } pub(crate) fn insert_uin_uid(&self, uin: u32, uid: String) { - // SAFETY: we can ensure that the DashMap is not None - self.uin2uid.as_ref().unwrap().insert(uin, uid.clone()); - self.uid2uin.as_ref().unwrap().insert(uid, uin); + self.uin2uid + .as_ref() + .map(|uin2uid| uin2uid.insert(uin, uid.clone())); + self.uid2uin + .as_ref() + .map(|uid2uin| uid2uin.insert(uid, uin)); } } diff --git a/mania/src/core/operation/cache_op.rs b/mania/src/core/operation/cache_op.rs index ae52455..f5569be 100644 --- a/mania/src/core/operation/cache_op.rs +++ b/mania/src/core/operation/cache_op.rs @@ -186,7 +186,9 @@ impl BusinessHandle { }); } friends.insert(friend.uin, friend.to_owned()); - self.cache.insert_uin_uid(friend.uin, friend.uid.clone()); + if self.cache.cache_mode == CacheMode::Full { + self.cache.insert_uin_uid(friend.uin, friend.uid.clone()); + } } Ok(None::<()>) }) @@ -260,9 +262,11 @@ impl BusinessHandle { Ok(None::<()>) }) .await?; - group_members.iter().for_each(|bgm| { - self.cache.insert_uin_uid(bgm.uin, bgm.uid.clone()); - }); + if self.cache.cache_mode == CacheMode::Full { + group_members.iter().for_each(|bgm| { + self.cache.insert_uin_uid(bgm.uin, bgm.uid.clone()); + }); + } self.cache .cached_group_members .as_ref()