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

Rust中如何通过迭代器修改结构体内部Vec的元素值?

问题原因

你原来的non_working_solution有两个核心错误:

  • Vec::iter()返回的是只读引用迭代器,拿到的元素类型是&u8,本身就不支持修改指向的元素值
  • 代码里的x = &number只是修改了闭包内本地变量x的指向,让它从指向Vec的元素改成指向参数number的内存地址,完全没有修改Vec内部的存储内容,当然不会生效
正确实现

要迭代修改Vec的元素,需要使用iter_mut()方法获取可变引用迭代器,拿到&mut u8类型的可变引用后,通过解引用操作符*就可以直接修改原Vec中的元素:

fn non_working_solution(&mut self, number: u8) -> bool {
    self.vec.iter_mut().all(|x| {
        *x = number; // 解引用可变引用,直接修改Vec内的对应元素
        true // 此处替换为你的外部校验逻辑,返回false会立刻终止迭代并整体返回false
    })
}

修改后运行即可得到你预期的输出,且all()方法的短路特性正好匹配你的需求:只要任意一次修改后的校验不通过,就会立刻停止迭代,直接返回false,不会继续修改后续元素。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:06:05