Rust vector.into_iter().filter(一些非平凡函数).collect()是否可接受

Rust vector.into_iter().filter(一些非平凡函数).collect()是否可接受,rust,Rust,因此,如果我有一个mut v:Vec,我只想保留活着的 我愿意 v = v.into_iter().filter(|&foo| non_trivial_function_returning_a_result(foo).is_ok()).collect() 是否会分配一个新的载体,然后销毁原来的载体? 有什么更好的方法可以做到这一点?将使用您提供的代码分配一个新的Vec。有几种可能的方法可以做到这一点,而无需根据您的时间限制和稳定性进行分配 向量保留 最简单的方法就是使用 仅保留谓词指定

因此,如果我有一个mut v:Vec,我只想保留活着的

我愿意

v = v.into_iter().filter(|&foo| non_trivial_function_returning_a_result(foo).is_ok()).collect()
是否会分配一个新的载体,然后销毁原来的载体? 有什么更好的方法可以做到这一点?

将使用您提供的代码分配一个新的Vec。有几种可能的方法可以做到这一点,而无需根据您的时间限制和稳定性进行分配

向量保留 最简单的方法就是使用

仅保留谓词指定的元素

您可以这样使用它:

让mut-vec=vec![1, 2, 3, 4]; vec.retain |&x |非平凡函数|返回|结果|是否正常; 断言!vec[2,4]; 向量排水过滤器 如果要对删除的元素执行需要所有权的操作,可以使用该方法。在撰写本文时,这种方法仅适用于夜间生锈

您可以这样使用它:

![特征排放过滤器] 让mut number=vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]; 对于数字中的x。drain|U filter|x |非平凡函数|U returning|U a|U resultx.是否正常{ //用x做点什么 } 如果您需要所有权,但不想使用nightly rust,则可以手动操作

设muti=0; 而我维克伦{ 如果非平凡函数返回结果&vec[i],是否正确{ 设val=vec.removei; //对瓦尔做点什么 }否则{ i+=1; } } 将使用您提供的代码分配新的Vec。有几种可能的方法可以做到这一点,而无需根据您的时间限制和稳定性进行分配

向量保留 最简单的方法就是使用

仅保留谓词指定的元素

您可以这样使用它:

让mut-vec=vec![1, 2, 3, 4]; vec.retain |&x |非平凡函数|返回|结果|是否正常; 断言!vec[2,4]; 向量排水过滤器 如果要对删除的元素执行需要所有权的操作,可以使用该方法。在撰写本文时,这种方法仅适用于夜间生锈

您可以这样使用它:

![特征排放过滤器] 让mut number=vec![1, 2, 3, 4, 5, 6, 8, 9, 11, 13, 14, 15]; 对于数字中的x。drain|U filter|x |非平凡函数|U returning|U a|U resultx.是否正常{ //用x做点什么 } 如果您需要所有权,但不想使用nightly rust,则可以手动操作

设muti=0; 而我维克伦{ 如果非平凡函数返回结果&vec[i],是否正确{ 设val=vec.removei; //对瓦尔做点什么 }否则{ i+=1; } }
@FrenchBoiethios:通过回答而不是评论,指出保留是恰当的;这个恶作剧真的没有必要:/@MatthieuM。我的本意不是咆哮。搜索功能时,在文档中进行查找比在线查询更好、更快。我只想保留一个元素中的活动项?是的,我应该在查询之前阅读文档,但我已经完成了更改,并转到了待办事项列表中的下一件事。我只是想也许我刚写的代码中有一些地方可以改进。所以我发布了我的问题,又写了300行代码,然后回来了。瞧,我想要的确切答案是一个有点屈尊俯就的评论?还是值得的。这不是stackoverflow的全部意义吗?活着的人->[0,N]elements@FrenchBoiethios:通过回答而不是评论来指出保留是合适的;这个恶作剧真的没有必要:/@MatthieuM。我的本意不是咆哮。搜索功能时,在文档中进行查找比在线查询更好、更快。我只想保留一个元素中的活动项?是的,我应该在查询之前阅读文档,但我已经完成了更改,并转到了待办事项列表中的下一件事。我只是想也许我刚写的代码中有一些地方可以改进。所以我发布了我的问题,又写了300行代码,然后回来了。瞧,我想要的确切答案是一个有点屈尊俯就的评论?还是值得的。这不是stackoverflow的全部意义吗?活动元素->[0,N]元素for循环中的元素置换是一个错误:应该是x的数字。drain\u filter。。。{}@cyclaminist谢谢你的提醒,我编辑了这个问题。虽然这是一个警告而不是一个错误,它不应该有那些括号。嗯,我得到了一个错误,而不是警告,在操场上的x在1..10{}。哦!你说得对。If语句生成警告,但for语句生成错误。我不知道。在我说类似的话之前,我应该检查一下我的事实,我很抱歉。for循环中的括号是一个错误:应该是x的数字。drain\u filter。。。{}@cyclaminist谢谢你的提醒,我编辑了这个问题。虽然这是一个警告而不是一个错误,它不应该有那些括号。嗯,我得到一个错误,而不是警告,f
或者是在操场上的1..10{}中的x。噢!你说得对。If语句生成警告,但for语句生成错误。我不知道。在我说那样的话之前,我应该核实一下我的事实,我的道歉。