我有一个
check
方法,它获取(并且需要)我拥有的大向量的所有权,并输出一个布尔值。如果它输出 true,那么我将 structs 字段设置为该向量。它看起来像这样:
fn my_func(&mut self, v: Vec<u8>) {
if self.check(v.clone()) {
self.v = v;
}
}
check
方法不能获取切片,即使可以,也只需将其克隆到里面,所以它不会解决任何问题。
我的问题是,只有在检查返回 true 并且我需要设置结构体的 v 字段时,有没有办法克隆
v
?因为目前,如果 check
返回 false,我就不必要地克隆了 v,它可能携带相当大的数据(大约 1 MB)。
您可以修改
check
以获取 vec,然后除了 bool 之外还返回它(或作为 Result
)。然后它可以在内部决定是否需要克隆或者是否可以返回未修改的 vec。