【发布时间】:2018-01-29 22:25:57
【问题描述】:
我正在寻找一种使用Vec 并返回一个元素的方法,而无需像remove 和swap_remove 那样恢复Vec 的不变量的开销:
fn take<T>(vec: Vec<T>, index: usize) -> Option<T>
但是,我找不到这样的方法。我错过了什么吗?这实际上是不安全的还是不可能的?
这是与Built in *safe* way to move out of Vec<T>? 不同的问题
目标是一个remove 方法,它不会对越界访问感到恐慌并返回一个Result。我正在寻找一种使用Vec 并返回其中一个元素的方法。上述问题的答案都没有解决我的问题。
【问题讨论】:
-
您是指可以从
vec.get(index)获得的具体Option<T>而不是Option<&T>,还是您错过了.get的存在? -
@loganfsmyth 我的意思是
Option<T>,就像我在问题中所说的那样。如果有意义,我想要的类似于option.take()? -
注意:如果你发现自己经常抛出
Vec,你可能想看看你是否可以避免一开始就将它们具体化。不做任何事情总是比做某事快,无论您做某事的效率如何。
标签: vector collections rust move-semantics