生命周期问题
来源:4-6 使用for_range进行迭代

幕布斯1124430
2022-01-30
老师那你看这个例子的问题怎么处理:
let mut ps:Vec<&i32> = vec![];
let mut loop_vec = [1,2,3,4,5,6];
for item in loop_vec.iter(){
let i = item + 1; ps.push(&i);
}
报错信息:ps.push(&i); &i borrowed value does not live long enough `i` dropped here while still borrowed
写回答
1回答
-
叶枭
2022-02-01
这个问题你分析下生命周期范围会比较清楚, 变量 i 的生命周期范围是在 `for item in loop_vec.iter(){ }` 之间, 而代码却希望将 i 变量的引用带到 main 函数的范围内(ps 变量).
修改方法就是将 ps 的类型定义为 `Vec<i32>`10
相似问题