我的错误是什么,如何修复它?
这显然是一个新手问题——尽管我认为我已经写了足够的 Rust 代码,以至于我已经掌握了借用检查器……显然我还没有。
fn get_m() -> Vec<i8> {
vec![1, 2, 3]
}
fn main() {
let mut vals = get_m().iter().peekable();
println!("Saw a {:?}", vals.peek());
}
编译器的错误建议“考虑使用let
绑定”——但我已经在使用了:
error[E0597]: borrowed value does not live long enough
--> src/main.rs:6:45
|
6 | let mut vals = get_m().iter().peekable();
| ------- ^ temporary value dropped here while still borrowed
| |
| temporary value created here
7 | println!("Saw a {:?}", vals.peek());
8 | }
| - temporary value needs to live until here
|
= note: consider using a `let` binding to increase its lifetime
这显然是一个新手问题——尽管我认为我已经写了足够的 Rust 代码,以至于我已经掌握了借用检查器……显然我还没有。
这个问题类似于使用`let`绑定来增加值的生命周期,但不涉及将表达式分解成多个语句,所以我认为问题并不完全相同。
get_m()
。 “考虑使用 let 绑定来增加其生命周期”。也就是说,在get_m()
部分使用 let 绑定。 - Chris Morgan