Заимствованное значение не живет достаточно долго в Option :: map

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

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

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


person Rudolf Schmidt    schedule 10.05.2018    source источник
comment
Я считаю, что на ваш вопрос уже ответил Результат Option :: map недостаточно долго живет. Если вы не согласны, отредактируйте свой вопрос, чтобы объяснить различия. В противном случае мы можем отметить это как уже полученный ответ.   -  person Shepmaster    schedule 10.05.2018
comment
На него также отвечает Время жизни аргумента Option :: map.   -  person Shepmaster    schedule 10.05.2018
comment
Информация дубликата применима к вашей ситуации.   -  person Shepmaster    schedule 10.05.2018