我试着做一个函数,返回向量中第k个元素的函数应用程序。下面是我的代码:
fn action<T, F: Fn(T) -> T>(f: F, k: usize, v: Vec<T>) -> Option<T> {
if k >= v.len() {
return None;
}
Some(f(v[k]))
}
我收到了以下错误消息:
error[E0507]: cannot move out of index of `Vec<T>`
--> src/lib.rs:5:12
|
5 | Some(f(v[k]))
| ^^^^ move occurs because value has type `T`, which does not implement the `Copy` trait
For more information about this error, try `rustc --explain E0507`.
如何解决此问题?
1条答案
按热度按时间5ktev3wc1#
这里有一种方法:
下面是另一种方式:
下面是第三种方式:
最好的方法取决于你的特定数据。当然,传递一个引用比把数据克隆到函数中更有效,但如果你对数字向量进行操作,这并不重要。