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

Rust如何基于条件更新删除Vector元素并实现账户金额扣减逻辑

实现逻辑

  • 倒序遍历条目列表,优先处理靠后的最新条目,匹配优先扣减最新条目的要求
  • 遍历过程中遇到目标超级英雄条目时,判断当前条目金额与剩余待扣金额的关系:
    • 若条目金额小于等于待扣金额:扣除全额后直接删除该条目,更新剩余待扣金额
    • 若条目金额大于待扣金额:直接在当前条目上扣除对应金额,结束扣减流程
  • 待扣金额清零后直接终止遍历,减少不必要的计算,且倒序遍历删除元素时不会影响未遍历的前序索引,不会出现索引错位问题

完整可运行代码

fn main() {
    let mut entries = vec![
        ("Batman", 1000),
        ("SuperMan", 500),
        ("Wonder-women", 100),
        ("Batman", 2000),
    ];
    const TARGET_NAME: &str = "Batman";
    let mut need_deduct = 2500;

    for idx in (0..entries.len()).rev() {
        if need_deduct <= 0 {
            break;
        }
        let (name, amount) = &mut entries[idx];
        if name == &TARGET_NAME {
            if *amount <= need_deduct {
                need_deduct -= *amount;
                entries.remove(idx);
            } else {
                *amount -= need_deduct;
                need_deduct = 0;
            }
        }
    }

    // 打印结果验证
    println!("{:?}", entries);
}

运行输出

[("Batman", 500), ("SuperMan", 500), ("Wonder-women", 100)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:42:00