Этот код читает строку из stdin, и я хочу разделить ее.
use std::io::stdin;
fn example() {
let mut input = String::new();
stdin().read_line(&mut input).expect("Failed to read line");
let mut parts = input.trim().split_whitespace();
let args = parts;
let new_dir = args.peekable().peek().unwrap();
println!("{}", new_dir);
}
Компилятор говорит:
error[E0597]: borrowed value does not live long enough
--> src/lib.rs:8:19
|
8 | let new_dir = args.peekable().peek().unwrap();
| ^^^^^^^^^^^^^^^ - temporary value dropped here while still borrowed
| |
| temporary value does not live long enough
9 | println!("{}", new_dir);
10 | }
| - temporary value needs to live until here
|
= note: consider using a `let` binding to increase its lifetime
Я понимаю, что это означает, что args.peekable()
создаетвременное значение и println!("{}", new_dir);
заимствует это значение.
Я не могу понять, где находится временное значение.Я думал, что заимствованное значение взято из args
, которое здесь не будет опущено.
Что на самом деле происходит в args.peekable().peek().unwrap();
?