From 0dc3982c8357b007ff40d1a4579d2a35374021d3 Mon Sep 17 00:00:00 2001 From: Hugo Rosenkranz-Costa Date: Wed, 20 Dec 2023 15:04:51 +0100 Subject: [PATCH] refacto: clean RevisionList cursor `skip_while` function --- src/core/primitives.rs | 12 ++++-------- src/data_struct/revision_list.rs | 16 +++++----------- 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/core/primitives.rs b/src/core/primitives.rs index 1dcac4e3..38039486 100644 --- a/src/core/primitives.rs +++ b/src/core/primitives.rs @@ -472,14 +472,10 @@ pub fn refresh( for (partition, user_chain) in usk.subkeys.iter_mut() { let master_chain = msk.subkeys.get(partition).expect("at least one key"); // compare against all master subkeys or the last one to remove old rights - let mut master_chain_iter = master_chain - .iter() - .take(if keep_old_rights { - master_chain.len() - } else { - 1 - }) - .peekable(); + let mut master_chain_iter = match keep_old_rights { + true => master_chain.iter().take(master_chain.len()).peekable(), + false => master_chain.iter().take(1).peekable(), + }; // 1 - add new master subkeys in user key if any let user_first_key = user_chain.front().expect("have one key").clone(); diff --git a/src/data_struct/revision_list.rs b/src/data_struct/revision_list.rs index dd047193..78b70c35 100644 --- a/src/data_struct/revision_list.rs +++ b/src/data_struct/revision_list.rs @@ -155,7 +155,7 @@ impl<'a, T> Cursor<'a, T> { } } - /// Iterates through new values adding them before the current cursor. + /// Adds a new value in the list before the current cursor. pub fn prepend(&mut self, new_value: T) { let Some(mut cursor) = self.cursor_ptr.take() else { return; @@ -174,17 +174,11 @@ impl<'a, T> Cursor<'a, T> { /// Moves the cursor down the list while the given predicate is true. pub fn skip_while(&mut self, mut f: impl FnMut(&T) -> bool) { - loop { - if let Some(Some(element)) = &self.cursor_ptr { - { - if !f(&element.data) { - return; - } - } - } else { - return; + while let Some(Some(element)) = &self.cursor_ptr { + match f(&element.data) { + true => self.move_next(), + false => return, } - self.move_next() } }