Я пишу LoG-фильтр в Rust, и я хотел использовать |
в качестве оператора оператора умножения элемента (a_{i,j} * b_{i,j}
), но компилятор жалуется на результат Output
. Он говорит, что self[(i, j)] * out[(i, j)]
не равен Mul<N>::Output
.Оператор для параметризованной структуры зависит от другого оператора
impl<N> BitOr<Matrix<N>> for Matrix<N> where N: Mul<N> {
type Output = Matrix<N>;
fn bitor(self, other: Matrix<N>) -> Matrix<N> {
if self.width() != other.width() ||
self.height() != other.height() {
panic!("Matrices need to have equal dimensions");
}
let mut out = Matrix::new(self.width(), self.height());
for i in 0..(self.width()) {
for j in 0..(self.height()) {
out[(i, j)] = self[(i, j)] * out[(i, j)];
}
}
out
}
}
Есть ли способ установить выход на основе Mul<N>::Output
типа?
Кстати, может быть, даже 'N :: Output' вместо'> :: Output' будет работать, но я не уверен здесь. –