about summary refs log tree commit diff
path: root/tests/ui/impl-trait/does-not-live-long-enough.stderr
blob: 9f3918ce3e082ed242e58a0a11e99d26f07d51d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
error[E0373]: closure may outlive the current function, but it borrows `prefix`, which is owned by the current function
  --> $DIR/does-not-live-long-enough.rs:6:33
   |
LL |     fn started_with<'a>(&'a self, prefix: &'a str) -> impl Iterator<Item=&'a str> {
   |                     -- lifetime `'a` defined here
LL |         self.data.iter().filter(|s| s.starts_with(prefix)).map(|s| s.as_ref())
   |                                 ^^^               ------ `prefix` is borrowed here
   |                                 |
   |                                 may outlive borrowed value `prefix`
   |
note: function requires argument type to outlive `'a`
  --> $DIR/does-not-live-long-enough.rs:6:9
   |
LL |         self.data.iter().filter(|s| s.starts_with(prefix)).map(|s| s.as_ref())
   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: to force the closure to take ownership of `prefix` (and any other referenced variables), use the `move` keyword
   |
LL |         self.data.iter().filter(move |s| s.starts_with(prefix)).map(|s| s.as_ref())
   |                                 ++++

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0373`.