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

Rust中Vec调用dedup方法对有序向量去重未返回预期结果

问题原因
  • Rust 标准库中Vec的dedup()方法属于原地操作方法,不会返回去重后的新向量,它的返回值为单元类型(),也就是你代码中输出的Result: ()。
  • 该方法会直接修改传入的可变向量,移除其中连续的重复元素,仅保留每个连续重复组的第一个元素,你传入的本身就是有序向量,刚好符合dedup()的去重要求。
修正方案

你只需要在调用dedup()之后直接打印修改后的原向量即可,修正后的代码如下:

fn main() {
    let mut input = vec![1, 1, 2, 3, 3];
    remove_dup(&mut input);
}

fn remove_dup(input: &mut Vec<u32>) { 
    input.dedup(); 
    println!("Result: {:?}", input);
}

运行后输出结果为:

Result: [1, 2, 3]

如果你不想修改原输入向量,可以先克隆一份再执行去重操作:

fn main() {
    let input = vec![1, 1, 2, 3, 3];
    let result = remove_dup(&input);
    println!("Result: {:?}", result);
    // 原input不会被修改
    println!("Original input: {:?}", input);
}

fn remove_dup(input: &Vec<u32>) -> Vec<u32> {
    let mut cloned_input = input.clone();
    cloned_input.dedup();
    cloned_input
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:04