-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsA-inferenceArea: Type inferenceArea: Type inferenceA-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`Area: Suggestions generated by the compiler applied by `cargo fix`C-bugCategory: This is a bug.Category: This is a bug.D-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
Description
I tried this code:
use std::collections::HashMap;
fn what() {
let descr = String::new();
let mut opts = HashMap::new();
let opt = String::new();
// To fix the error, `as_ref` should be replaced with `as_str`
if let None = opts.get(opt.as_ref()) {
opts.insert(opt, ());
}
}
I expected to see this happen: error pointing to opt.as_ref()
Instead, this happened: error points to descr
which is unrelated to the error
error[E0283]: type annotations needed for `String`
--> src/lib.rs:8:24
|
4 | let descr = String::new();
| ----- consider giving `descr` a type
...
8 | if let None = opts.get(opt.as_ref()) {
| ^^^ cannot infer type for struct `String`
|
= note: cannot satisfy `String: Borrow<_>`
Meta
Tested with rustc 1.47.0 (18bf6b4f0 2020-10-07)
and rustc 1.49.0-nightly (2020-10-14 e160e5cb80652bc2afe7)
Aaron1011 and tesuji
Metadata
Metadata
Assignees
Labels
A-diagnosticsArea: Messages for errors, warnings, and lintsArea: Messages for errors, warnings, and lintsA-inferenceArea: Type inferenceArea: Type inferenceA-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`Area: Suggestions generated by the compiler applied by `cargo fix`C-bugCategory: This is a bug.Category: This is a bug.D-incorrectDiagnostics: A diagnostic that is giving misleading or incorrect information.Diagnostics: A diagnostic that is giving misleading or incorrect information.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.