E0599 rust type_error ai_generated true

error[E0599]: no method named `iter` found for struct `std::collections::HashMap<String, i32>` in the current scope

ID: rust/e0599-no-method-named-iter-found

Also available as: JSON · Markdown · 中文
93%Fix Rate
87%Confidence
1Evidence
2023-01-20First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
rustc 1.58.0 active
rustc 1.64.0 active
rustc 1.71.0 active

Root Cause

HashMap does not have an `iter` method that returns an iterator over items; use `iter()` on references or `into_iter()` for owned iteration.

generic

中文

HashMap 没有返回元素迭代器的 `iter` 方法;应对引用使用 `iter()` 或对所有权使用 `into_iter()`。

Official Documentation

https://doc.rust-lang.org/error_codes/E0599.html

Workarounds

  1. 95% success Use `map.iter()` on a reference: `for (key, value) in &map { ... }` or `let iter = map.iter();`
    Use `map.iter()` on a reference: `for (key, value) in &map { ... }` or `let iter = map.iter();`
  2. 90% success Use `into_iter()` for owned iteration: `for (key, value) in map { ... }`
    Use `into_iter()` for owned iteration: `for (key, value) in map { ... }`
  3. 85% success Use `values()` or `keys()` methods: `for value in map.values() { ... }`
    Use `values()` or `keys()` methods: `for value in map.values() { ... }`

中文步骤

  1. 对引用使用 `map.iter()`:`for (key, value) in &map { ... }` 或 `let iter = map.iter();`
  2. 对所有权使用 `into_iter()`:`for (key, value) in map { ... }`
  3. 使用 `values()` 或 `keys()` 方法:`for value in map.values() { ... }`

Dead Ends

Common approaches that don't work:

  1. 90% fail

    Iterator is automatically in scope. The issue is that HashMap doesn't have a method named `iter` without the trait bounds being satisfied.

  2. 70% fail

    The method exists but is named `into_iter()` for owned HashMap. `iter()` exists on references like `&map`.

  3. 95% fail

    Iterator is a trait, not a derive macro. You cannot derive Iterator for HashMap.