采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
for item in params_vec.iter(){ ps.push(&item as Parameter); }
搞这个 item 好久了,一直报错,请教老师一下到底该怎么处理这个情况
.iter() 返回的是 &T 的迭代, 因此可以直接用 ps.push(item), 例如
fn main() { let args: Vec<String> = std::env::args().collect(); let mut ps = vec![]; for item in args.iter() { ps.push(item); } }
老师那你看这个例子的问题怎么处理: 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
这个问题你分析下生命周期范围会比较清楚, 变量 i 的生命周期范围是在 `for item in loop_vec.iter(){ }` 之间, 而代码却希望将 i 变量的引用带到 main 函数的范围内(ps 变量). 修改方法就是将 ps 的类型定义为 `Vec<i32>`
登录后可查看更多问答,登录/注册
入门者的平缓学习曲线,聚焦Rust核心重难点,获得实际应用能力
760 5
441 4
577 4
656 3
502 3