From: Ian Jackson Date: Tue, 2 Mar 2021 18:44:37 +0000 (+0000) Subject: hidden notch: some refactoring, variable names, etc. X-Git-Tag: otter-0.4.0~254 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=0bd8d559bc9b65045a60fde165da1437ea1fa4c2;p=otter.git hidden notch: some refactoring, variable names, etc. Signed-off-by: Ian Jackson --- diff --git a/src/hidden.rs b/src/hidden.rs index f6777e85..c5d96900 100644 --- a/src/hidden.rs +++ b/src/hidden.rs @@ -189,6 +189,18 @@ mod vpid { } type NR = NotchRecord; + impl NotchRecord { + fn unwrap_free(&self) -> NotchPtr { match self { + &NR::Free(ptr) => ptr, + _ => panic!(), + }} + + fn unwrap_free_mut(&mut self) -> &mut NotchPtr { match self { + NR::Free(ptr) => ptr, + _ => panic!(), + }} + } + #[derive(Clone,Debug,Serialize,Deserialize,Default)] pub struct Notches { freelist: NotchPtr, @@ -211,13 +223,10 @@ mod vpid { None => { self.table.push(new) }, - Some(u) => { - self.freelist = match self.table[u] { - NR::Free(n) => n, - NR::Piece(_) => panic!(), - }; - self.table[u] = new; - u + Some(old_free_head) => { + self.freelist = self.table[old_free_head].unwrap_free(); + self.table[old_free_head] = new; + old_free_head }, } } @@ -236,8 +245,7 @@ mod vpid { if notch < next { break } if notch == next { panic!() }; let next = &mut self.table[next]; - insert_here = - if let NR::Free(f) = next { f } else { panic!() }; + insert_here = next.unwrap_free_mut(); } // Now either *insert_here==NULL or notch < insert_here->next let old_next = mem::replace(insert_here, Some(notch));