gpt4 book ai didi

rust - 有没有办法从另一个向量中存在的通用第一个向量中删除条目?

转载 作者:行者123 更新时间:2023-11-29 08:26:55 25 4
gpt4 key购买 nike

调用高阶函数时,我无法理解所有权。如果元素存在于第二个向量中,我应该从第一个向量中删除条目,所以我想出了这个尝试:

fn array_diff<T: PartialEq>(a: Vec<T>, b: Vec<T>) -> Vec<T> {
a.iter()
.filter(|incoming| !b.contains(incoming))
.collect::<Vec<T>>()
}

我无法更改函数签名。 .collect() 调用不起作用,因为我得到的只是对 a 中元素的引用。虽然这是通用的,但我不知道结果是 copy 还是 clone。我也可能无法取消引用 a 中的元素。

有没有办法在不从头重写的情况下修复这段代码?

最佳答案

对于这个特定的测试...您可以使用向量而不是依赖引用。签名产生值而不是引用。因此,要通过测试,您只需使用 into_iter 代替:

a.into_iter() // <----------- call into_iter
.filter(|incoming| !b.contains(incoming))
.collect::<Vec<T>>()

这会消耗这些值并再次将它们返回。

关于rust - 有没有办法从另一个向量中存在的通用第一个向量中删除条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com