From 36ddc9315fb23b95c52900ca520a6f129db8c9f2 Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Sat, 5 Dec 2020 15:35:11 +0000 Subject: [PATCH] wip always make tokens: refactor nfc Signed-off-by: Ian Jackson --- src/global.rs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/global.rs b/src/global.rs index a134d0a5..cbd431bc 100644 --- a/src/global.rs +++ b/src/global.rs @@ -697,8 +697,23 @@ impl<'ig> InstanceGuard<'ig> { .latest = now; access }; - + + let current_tokens : ArrayVec<[&RawToken;2]> = { + let players = GLOBAL.players.read().unwrap(); + self.tokens_players.tr.iter(). + filter(|&token| (||{ + let iad = players.get(token)?; + if iad.ident != player { return None } + if ! Arc::ptr_eq(&iad.gref.0, &self.gref.0) { return None } + Some(()) + })() == Some(())) + .take(2) + .collect() + }; + let token : RawToken = if reset { + drop(current_tokens); + self.invalidate_tokens(player)?; self.save_access_now()?; @@ -721,20 +736,7 @@ impl<'ig> InstanceGuard<'ig> { } else { - let tokens : ArrayVec<[&RawToken;2]> = { - let players = GLOBAL.players.read().unwrap(); - self.tokens_players.tr.iter(). - filter(|&token| (||{ - let iad = players.get(token)?; - if iad.ident != player { return None } - if ! Arc::ptr_eq(&iad.gref.0, &self.gref.0) { return None } - Some(()) - })() == Some(())) - .take(2) - .collect() - }; - - let token = match tokens.as_slice() { + let token = match current_tokens.as_slice() { [] => throw!(ME::AuthorisationUninitialised), [token] => token, _ => { -- 2.30.2