std::mem::replace
的Rust文档引用了以下无法编译的代码示例。
struct Buffer<T> { buf: Vec<T> }
impl<T> Buffer<T> {
fn replace_index(&mut self, i: usize, v: T) -> T {
// error: cannot move out of dereference of `&mut`-pointer
let t = self.buf[i];
self.buf[i] = v;
t
}
}
https://doc.rust-lang.org/std/mem/fn.replace.html
有没有可能约束模板类型参数T
,使我们强制T
是可复制的,从而使此代码法律的?
1条答案
按热度按时间h43kikqp1#
你试过这样做吗?你可以像下面这样指定类型参数。
然后,你可以写一段这样的代码:
上面代码的输出是: