for循环导致生命周期不足或无效引用(invalid cast)

来源:7-4 生命周期

幕布斯1124430

2022-01-28

for item in params_vec.iter(){
ps.push(&item as Parameter);
}

搞这个 item 好久了,一直报错,请教老师一下到底该怎么处理这个情况

写回答

1回答

叶枭

2022-01-28

.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);
    }
}


0
2
叶枭
回复
幕布斯1124430
这个问题你分析下生命周期范围会比较清楚, 变量 i 的生命周期范围是在 `for item in loop_vec.iter(){ }` 之间, 而代码却希望将 i 变量的引用带到 main 函数的范围内(ps 变量). 修改方法就是将 ps 的类型定义为 `Vec`
2022-02-01
共2条回复

轻松实现Rust系统入门,实战编译器开发

入门者的平缓学习曲线,聚焦Rust核心重难点,获得实际应用能力

442 学习 · 45 问题

查看课程