diff --git a/crates/notedeck/src/account/cache.rs b/crates/notedeck/src/account/cache.rs index 843a9193..7f5b37bd 100644 --- a/crates/notedeck/src/account/cache.rs +++ b/crates/notedeck/src/account/cache.rs @@ -90,6 +90,14 @@ impl AccountCache { .get_mut(&self.selected) .expect("guarenteed that selected exists in accounts") } + + pub fn contains(&self, pk: &[u8; 32]) -> bool { + self.accounts.contains_key(pk) + } + + pub(super) fn iter_mut(&mut self) -> AccountCacheIterMut<'_> { + AccountCacheIterMut(self.accounts.iter_mut()) + } } impl<'a> IntoIterator for &'a AccountCache { @@ -100,3 +108,13 @@ impl<'a> IntoIterator for &'a AccountCache { self.accounts.iter() } } + +pub(super) struct AccountCacheIterMut<'a>(hashbrown::hash_map::IterMut<'a, Pubkey, UserAccount>); + +impl<'a> Iterator for AccountCacheIterMut<'a> { + type Item = (&'a Pubkey, &'a mut UserAccount); + + fn next(&mut self) -> Option { + self.0.next() + } +}