From: Ian Jackson Date: Thu, 11 Mar 2021 19:24:51 +0000 (+0000) Subject: hidden: pass a unique Generation into permute X-Git-Tag: otter-0.4.0~151 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=a879e756cf06ba9684eecd9296a787e7a724b87b;p=otter.git hidden: pass a unique Generation into permute Signed-off-by: Ian Jackson --- 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()); } }