From ef899ce440e2f8c3ec3605700a9e48222894ed9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Fri, 17 Nov 2023 16:37:43 +0100 Subject: [PATCH 1/2] mpmc: use cmp() as per clippy c.f. #411 --- src/mpmc.rs | 70 +++++++++++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/src/mpmc.rs b/src/mpmc.rs index cf221acbee..e1503d79ec 100644 --- a/src/mpmc.rs +++ b/src/mpmc.rs @@ -205,7 +205,6 @@ impl Cell { } } -#[allow(clippy::comparison_chain)] unsafe fn dequeue( buffer: *mut Cell, dequeue_pos: &AtomicTargetSize, @@ -219,22 +218,26 @@ unsafe fn dequeue( let seq = (*cell).sequence.load(Ordering::Acquire); let dif = (seq as i8).wrapping_sub((pos.wrapping_add(1)) as i8); - if dif == 0 { - if dequeue_pos - .compare_exchange_weak( - pos, - pos.wrapping_add(1), - Ordering::Relaxed, - Ordering::Relaxed, - ) - .is_ok() - { - break; + match dif.cmp(&0) { + core::cmp::Ordering::Equal => { + if dequeue_pos + .compare_exchange_weak( + pos, + pos.wrapping_add(1), + Ordering::Relaxed, + Ordering::Relaxed, + ) + .is_ok() + { + break; + } + } + core::cmp::Ordering::Less => { + return None; + } + core::cmp::Ordering::Greater => { + pos = dequeue_pos.load(Ordering::Relaxed); } - } else if dif < 0 { - return None; - } else { - pos = dequeue_pos.load(Ordering::Relaxed); } } @@ -245,7 +248,6 @@ unsafe fn dequeue( Some(data) } -#[allow(clippy::comparison_chain)] unsafe fn enqueue( buffer: *mut Cell, enqueue_pos: &AtomicTargetSize, @@ -260,22 +262,26 @@ unsafe fn enqueue( let seq = (*cell).sequence.load(Ordering::Acquire); let dif = (seq as i8).wrapping_sub(pos as i8); - if dif == 0 { - if enqueue_pos - .compare_exchange_weak( - pos, - pos.wrapping_add(1), - Ordering::Relaxed, - Ordering::Relaxed, - ) - .is_ok() - { - break; + match dif.cmp(&0) { + core::cmp::Ordering::Equal => { + if enqueue_pos + .compare_exchange_weak( + pos, + pos.wrapping_add(1), + Ordering::Relaxed, + Ordering::Relaxed, + ) + .is_ok() + { + break; + } + } + core::cmp::Ordering::Less => { + return Err(item); + } + core::cmp::Ordering::Greater => { + pos = enqueue_pos.load(Ordering::Relaxed); } - } else if dif < 0 { - return Err(item); - } else { - pos = enqueue_pos.load(Ordering::Relaxed); } } From 11e318a08a2dabe34ee9d9766b892a2de2bcaa0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20J=C3=B6rdens?= Date: Fri, 17 Nov 2023 16:51:06 +0100 Subject: [PATCH 2/2] linear_map: use binding ergonomics, adress clippy also derive Clone and Debug for linear_map::Iter --- src/linear_map.rs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/linear_map.rs b/src/linear_map.rs index 68079dce15..e00a818fb8 100644 --- a/src/linear_map.rs +++ b/src/linear_map.rs @@ -441,6 +441,7 @@ where } } +#[derive(Clone, Debug)] pub struct Iter<'a, K, V> { iter: slice::Iter<'a, (K, V)>, } @@ -448,20 +449,12 @@ pub struct Iter<'a, K, V> { impl<'a, K, V> Iterator for Iter<'a, K, V> { type Item = (&'a K, &'a V); - #[allow(clippy::needless_borrowed_reference)] fn next(&mut self) -> Option { - self.iter.next().map(|&(ref k, ref v)| (k, v)) - } -} - -impl<'a, K, V> Clone for Iter<'a, K, V> { - fn clone(&self) -> Self { - Self { - iter: self.iter.clone(), - } + self.iter.next().map(|(k, v)| (k, v)) } } +#[derive(Debug)] pub struct IterMut<'a, K, V> { iter: slice::IterMut<'a, (K, V)>, } @@ -470,7 +463,7 @@ impl<'a, K, V> Iterator for IterMut<'a, K, V> { type Item = (&'a K, &'a mut V); fn next(&mut self) -> Option { - self.iter.next().map(|&mut (ref k, ref mut v)| (k, v)) + self.iter.next().map(|(k, v)| (k as &K, v)) } }