ライフタイムを使用していくつかの特性を実装しようとしていますが、いつものように借用チェッカーと戦っています。
私の特性は次のようになります。
pub struct Matrix<T> {
pub cols: usize,
pub rows: usize,
pub data: Vec<T>
}
impl<'a, 'b, T: Copy + Mul<T, Output=T>> Mul<&'b T> for &'a Matrix<T> {
type Output = Matrix<T>;
fn mul(self, f: &T) -> Matrix<T> {
let new_data : Vec<T> = self.data.into_iter().map(|v| v * (*f)).collect();
Matrix {
cols: self.cols,
rows: self.rows,
data: new_data
}
}
}
遊び場リンク
これにより、次のエラーが発生します。
error: cannot move out of borrowed content
なぜこれが起こっているのか理解していると思います.自己を借りているので、データをコピーできません. どうすればこれを回避できますか?