# no-zero-iterator-drop

Disallow Iterator.drop with a constant zero count

Dropping zero values wraps an Iterator without changing the sequence it yields.
Instead, you SHOULD use the original Iterator directly.

- Category: performance
- Level: warning
- Fix: suggestion
- Scope: module

## Reported

```ds title="main.ds"
import { Iterator } from "destack:iter";

function retain(values: Iterator<int32>): Iterator<int32> {
    return values.drop(0);
}
```

## Accepted

```ds title="main.ds"
import { Iterator } from "destack:iter";

function retain(values: Iterator<int32>): Iterator<int32> {
    return values;
}
```

## Prior art

- [Clippy · iter_skip_zero](https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_zero)

[language/linter/src/rules/performance/no_zero_iterator_drop.rs:8](https://github.com/destack-sh/destack/blob/main/language/linter/src/rules/performance/no_zero_iterator_drop.rs#L8)
