# prefer-enumerate

Prefer indexed iteration over manually counting values

Initializing an index before iteration and incrementing it after every value maintains information already provided by `entries` or `enumerate`.
Instead, you SHOULD bind each index and value from the indexed iterator.

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

## Reported

```ds title="main.ds"
function indexes(values: int32[], output: isize[]): void {
    let index: isize = 0;
    for (const value of values) {
        output.push(index);
        index++;
    }
}
```

## Accepted

```ds title="main.ds"
function indexes(values: int32[], output: isize[]): void {
    for (const (index, value) of values.entries()) {
        output.push(index);
    }
}
```

## Prior art

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

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