You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中遍历Vec且不销毁其中元素?

在Rust中遍历Vec且不转移所有权的正确方式

你原来的代码for i in v会把整个Vec的所有权转移到循环里,遍历结束后原Vec就无法再被使用了。要实现遍历但不销毁元素,你需要遍历Vec的引用,而不是Vec本身,下面是几种正确的写法:

方法1:遍历Vec的引用

直接在循环中使用&v,此时循环变量i的类型是&i64(常量引用),打印时println!会自动处理解引用:

for i in &v {
    println!("{}", i);
}

方法2:使用iter()方法

调用Vec的iter()方法会返回一个迭代器,迭代器产生的元素都是原Vec元素的常量引用:

for i in v.iter() {
    println!("{}", i);
}

如果想让i是值类型而非引用

如果你希望循环变量i是i64类型(而非引用),同时又不转移原Vec的所有权,可以通过模式匹配解引用,但要注意是遍历Vec的引用:

for &i in &v {
    println!("{}", i);
}

你之前代码出错的原因

你写的for &i in multipliers_vec是直接遍历原Vec,此时迭代产生的元素是i64类型,而&i这个模式试图匹配一个引用类型,类型不匹配自然会报错expected i64, found reference。

内容的提问来源于stack exchange,提问作者user2138149

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:44:55