-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Open
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-false-positiveIssue: The lint was triggered on code it shouldn't haveIssue: The lint was triggered on code it shouldn't have
Description
Summary
I'm not sure whether this count as FP, so I'm reporting just in case. If it doesn't, feel free to close the issue
A struct containing a Peekable
, and giving an accessor to it causes unused_peekable
to be raised if the consumer of the accessor only use it as an iterator, without peeking.
I think this lint should only trigger following a call to .peekable()
Lint Name
unused_peekable
Reproducer
I tried this code:
use std::iter::Peekable;
struct Wrapper<I: Iterator<Item = T>, T> {
iter: std::iter::Peekable<I>,
}
impl<I: Iterator<Item = T>, T> Wrapper<I, T> {
fn new(iter: I) -> Self {
Wrapper {
iter: iter.peekable(),
}
}
fn iter(
&mut self,
) -> &mut Peekable<impl Iterator<Item = T>> {
&mut self.iter
}
}
fn next() -> usize {
let mut reader = Wrapper::new([1usize,2,3].iter());
// ko
let it = reader.iter();
let tok = it.next().unwrap();
*tok
}
fn peek() -> usize {
let mut reader = Wrapper::new([1usize,2,3].iter());
// ok
let it = reader.iter();
let tok = it.peek().unwrap();
**tok
}
fn main() {
next();
peek();
}
I saw this happen:
--> /tmp/testing/src/main.rs:24:9
|
24 | let it = reader.iter();
| ^^
|
= note: `#[warn(clippy::unused_peekable)]` on by default
= help: consider removing the call to `peekable`
= help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_peekable
warning: 1 warning emitted
I expected to see this happen:
no warn
Version
clippy-driver compiled from 2ddbc86bef837b1072159c020c35940ce52ae696 (after #9465)
Additional Labels
No response
Metadata
Metadata
Assignees
Labels
C-bugCategory: Clippy is not doing the correct thingCategory: Clippy is not doing the correct thingI-false-positiveIssue: The lint was triggered on code it shouldn't haveIssue: The lint was triggered on code it shouldn't have