Заимствованное значение не живет достаточно долго в Option :: map - PullRequest
0 голосов
/ 10 мая 2018

Компилирование следующего фрагмента:

use std::env;

fn main() {
    let base = env::home_dir()
        .map(|p| p.join(".foo"))
        .map(|p| p.join("bar"))
        .map(|p| p.display())
        .expect("dir not loadable");
    println!("Name: {}", base)
}

Я получаю ошибку:

error[E0597]: `p` does not live long enough
  --> src/main.rs:7:18
   |
7  |         .map(|p| p.display())
   |                  ^         - `p` dropped here while still     borrowed
   |                  |
   |                  borrowed value does not live long enough
...
18 | }
   | - borrowed value needs to live until here

В чем причина этой ошибки? Какое решение?

...