Skip to content

Commit fa67f35

Browse files
authored
Merge pull request #413 from quartiq/clipp-mpmc
clippy lint in mpmc and linear_map
2 parents d9b06bd + 11e318a commit fa67f35

File tree

2 files changed

+42
-43
lines changed

2 files changed

+42
-43
lines changed

src/linear_map.rs

+4-11
Original file line numberDiff line numberDiff line change
@@ -441,27 +441,20 @@ where
441441
}
442442
}
443443

444+
#[derive(Clone, Debug)]
444445
pub struct Iter<'a, K, V> {
445446
iter: slice::Iter<'a, (K, V)>,
446447
}
447448

448449
impl<'a, K, V> Iterator for Iter<'a, K, V> {
449450
type Item = (&'a K, &'a V);
450451

451-
#[allow(clippy::needless_borrowed_reference)]
452452
fn next(&mut self) -> Option<Self::Item> {
453-
self.iter.next().map(|&(ref k, ref v)| (k, v))
454-
}
455-
}
456-
457-
impl<'a, K, V> Clone for Iter<'a, K, V> {
458-
fn clone(&self) -> Self {
459-
Self {
460-
iter: self.iter.clone(),
461-
}
453+
self.iter.next().map(|(k, v)| (k, v))
462454
}
463455
}
464456

457+
#[derive(Debug)]
465458
pub struct IterMut<'a, K, V> {
466459
iter: slice::IterMut<'a, (K, V)>,
467460
}
@@ -470,7 +463,7 @@ impl<'a, K, V> Iterator for IterMut<'a, K, V> {
470463
type Item = (&'a K, &'a mut V);
471464

472465
fn next(&mut self) -> Option<Self::Item> {
473-
self.iter.next().map(|&mut (ref k, ref mut v)| (k, v))
466+
self.iter.next().map(|(k, v)| (k as &K, v))
474467
}
475468
}
476469

src/mpmc.rs

+38-32
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ impl<T> Cell<T> {
205205
}
206206
}
207207

208-
#[allow(clippy::comparison_chain)]
209208
unsafe fn dequeue<T>(
210209
buffer: *mut Cell<T>,
211210
dequeue_pos: &AtomicTargetSize,
@@ -219,22 +218,26 @@ unsafe fn dequeue<T>(
219218
let seq = (*cell).sequence.load(Ordering::Acquire);
220219
let dif = (seq as i8).wrapping_sub((pos.wrapping_add(1)) as i8);
221220

222-
if dif == 0 {
223-
if dequeue_pos
224-
.compare_exchange_weak(
225-
pos,
226-
pos.wrapping_add(1),
227-
Ordering::Relaxed,
228-
Ordering::Relaxed,
229-
)
230-
.is_ok()
231-
{
232-
break;
221+
match dif.cmp(&0) {
222+
core::cmp::Ordering::Equal => {
223+
if dequeue_pos
224+
.compare_exchange_weak(
225+
pos,
226+
pos.wrapping_add(1),
227+
Ordering::Relaxed,
228+
Ordering::Relaxed,
229+
)
230+
.is_ok()
231+
{
232+
break;
233+
}
234+
}
235+
core::cmp::Ordering::Less => {
236+
return None;
237+
}
238+
core::cmp::Ordering::Greater => {
239+
pos = dequeue_pos.load(Ordering::Relaxed);
233240
}
234-
} else if dif < 0 {
235-
return None;
236-
} else {
237-
pos = dequeue_pos.load(Ordering::Relaxed);
238241
}
239242
}
240243

@@ -245,7 +248,6 @@ unsafe fn dequeue<T>(
245248
Some(data)
246249
}
247250

248-
#[allow(clippy::comparison_chain)]
249251
unsafe fn enqueue<T>(
250252
buffer: *mut Cell<T>,
251253
enqueue_pos: &AtomicTargetSize,
@@ -260,22 +262,26 @@ unsafe fn enqueue<T>(
260262
let seq = (*cell).sequence.load(Ordering::Acquire);
261263
let dif = (seq as i8).wrapping_sub(pos as i8);
262264

263-
if dif == 0 {
264-
if enqueue_pos
265-
.compare_exchange_weak(
266-
pos,
267-
pos.wrapping_add(1),
268-
Ordering::Relaxed,
269-
Ordering::Relaxed,
270-
)
271-
.is_ok()
272-
{
273-
break;
265+
match dif.cmp(&0) {
266+
core::cmp::Ordering::Equal => {
267+
if enqueue_pos
268+
.compare_exchange_weak(
269+
pos,
270+
pos.wrapping_add(1),
271+
Ordering::Relaxed,
272+
Ordering::Relaxed,
273+
)
274+
.is_ok()
275+
{
276+
break;
277+
}
278+
}
279+
core::cmp::Ordering::Less => {
280+
return Err(item);
281+
}
282+
core::cmp::Ordering::Greater => {
283+
pos = enqueue_pos.load(Ordering::Relaxed);
274284
}
275-
} else if dif < 0 {
276-
return Err(item);
277-
} else {
278-
pos = enqueue_pos.load(Ordering::Relaxed);
279285
}
280286
}
281287

0 commit comments

Comments
 (0)