chiark / gitweb /
wip new accounts
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 31 Oct 2020 12:52:48 +0000 (12:52 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 31 Oct 2020 12:52:48 +0000 (12:52 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/accounts.rs

index 62724e03d4e15bb843a1885f61a56ed007fc2a7e..81d002cd4c8f766d3aeb131689bc55416076d3e4 100644 (file)
@@ -316,16 +316,17 @@ impl AccountsGuard {
                       account: &AccountName,
                       _auth: Authorisation<AccountName>)
   {
-    let (accounts, oe) = if_chain! {
+    let (accounts, acctid) = if_chain! {
       if let Some(accounts) = self.0.as_mut();
-      let entry = accounts.names.entry(account);
-      if let hash_map::Entry::Occupied(oe) = entry;
-      then { (accounts, oe) }
-      else { throw!(ME::AccountNotFound) }
+      if let Some(&acctid) = accounts.names.get(account);
+      then { (accounts, acctid) }
+      else { throw!(AccountNotFound) }
     };
-    let acctid = *oe.key();
-    process_all_players_for_account(acctid, InstanceGuard::player_remove)?;
-    oe.remove();
+    process_all_players_for_account(acctid, |ig,player| {
+      ig.player_remove(player)?;
+      Ok::<_,ME>(())
+    })?;
+    accounts.names.remove(account);
     accounts.records.remove(acctid);
     self.save_accounts_now()?;
   }