From a879e756cf06ba9684eecd9296a787e7a724b87b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Thu, 11 Mar 2021 19:24:51 +0000 Subject: [PATCH] hidden: pass a unique Generation into permute Signed-off-by: Ian Jackson --- src/hidden.rs | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/hidden.rs b/src/hidden.rs index 8eb6fd25..cc469717 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -395,7 +395,8 @@ mod vpid { occ: &mut Occultation, gplayers: &mut GPlayers, gpieces: &mut GPieces, - ipieces: &IPieces) { + ipieces: &IPieces, + z_gen: Generation /* unique to this call */) { let new_notches = { let mut ilks: HashMap Implemented { + struct GenIncr<'g> { gen: &'g mut Generation, none_yet: Option<()>, } + impl GenIncr<'_> { + fn next(&mut self) -> Generation { + if self.none_yet.take().is_some() { self.gen.increment() } + let r = *self.gen; + self.gen.increment(); + r + } + } + let mut gen = GenIncr { gen, none_yet: Some(()) }; + for occid in self.outdated { if let Some(occ) = goccults.occults.get_mut(occid) { - vpid::permute(occid, occ, gplayers, gpieces, ipieces); + vpid::permute(occid, occ, gplayers, gpieces, ipieces, gen.next()); } } -- 2.30.2