about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorEsteban Küber <esteban@kuber.com.ar>2024-03-08 22:59:53 +0000
committerEsteban Küber <esteban@kuber.com.ar>2024-04-05 19:42:55 +0000
commit9de6b70bb65c922c6e75e2439cb5a8cb9d30e2a1 (patch)
tree967d5ca0d2afffbf1394e857e879b3476772d4f7 /compiler/rustc_codegen_llvm/src
parent76cf07d5df52c07c3cd4cfeea1ab32b1cfba71bf (diff)
downloadrust-9de6b70bb65c922c6e75e2439cb5a8cb9d30e2a1.tar.gz
rust-9de6b70bb65c922c6e75e2439cb5a8cb9d30e2a1.zip
Provide suggestion to dereference closure tail if appropriate
When encoutnering a case like

```rust
//@ run-rustfix
use std::collections::HashMap;

fn main() {
    let vs = vec![0, 0, 1, 1, 3, 4, 5, 6, 3, 3, 3];

    let mut counts = HashMap::new();
    for num in vs {
        let count = counts.entry(num).or_insert(0);
        *count += 1;
    }

    let _ = counts.iter().max_by_key(|(_, v)| v);
```
produce the following suggestion
```
error: lifetime may not live long enough
  --> $DIR/return-value-lifetime-error.rs:13:47
   |
LL |     let _ = counts.iter().max_by_key(|(_, v)| v);
   |                                       ------- ^ returning this value requires that `'1` must outlive `'2`
   |                                       |     |
   |                                       |     return type of closure is &'2 &i32
   |                                       has type `&'1 (&i32, &i32)`
   |
help: dereference the return value
   |
LL |     let _ = counts.iter().max_by_key(|(_, v)| **v);
   |                                               ++
```

Fix #50195.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions