Я пытаюсь реализовать некоторые черты, используя время жизни, но, как обычно, я сражаюсь с заемщиком.Перемещение коллекции из контекста
Моя черта выглядит следующим образом:
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
}
}
}
площадка link
Это дает следующее сообщение об ошибке:
error: cannot move out of borrowed content
Я думаю, что я понимаю, почему это происходит: я заимствование себя и поэтому я не могу скопировать данные. Как мне обойти это?
Возможной Дубликат [Невозможно выйти из заимствованного контента при заимствовании общего типа] (http://stackoverflow.com/questions/28595075/can not-move-out-of-заимствованный-content-when-loaning-a-generic-type) –