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
93%Fix Rate
87%Confidence
1Evidence
2023-01-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 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.htmlWorkarounds
-
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();` -
90% success Use `into_iter()` for owned iteration: `for (key, value) in map { ... }`
Use `into_iter()` for owned iteration: `for (key, value) in map { ... }` -
85% success Use `values()` or `keys()` methods: `for value in map.values() { ... }`
Use `values()` or `keys()` methods: `for value in map.values() { ... }`
中文步骤
对引用使用 `map.iter()`:`for (key, value) in &map { ... }` 或 `let iter = map.iter();`对所有权使用 `into_iter()`:`for (key, value) in map { ... }`使用 `values()` 或 `keys()` 方法:`for value in map.values() { ... }`
Dead Ends
Common approaches that don't work:
-
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.
-
70% fail
The method exists but is named `into_iter()` for owned HashMap. `iter()` exists on references like `&map`.
-
95% fail
Iterator is a trait, not a derive macro. You cannot derive Iterator for HashMap.