Hi! I'm building a lib for multiplying matrices but i'm getting a very annoying error simply stating
summa += self.matris[i][k] * matris.matris[k][j];
^^ cannot infer type
This is my code
#[derive(Debug, Clone, Copy)]
enum Egenskaper{
Rektangel,
Kvadrat
}
#[derive(Debug, Clone)]
struct Matris<T> {
matris: Vec<Vec<T>>,
form: (usize, usize),
egenskaper: Vec<Egenskaper>
}
// Statiska funktioner
impl<T> Matris<T> where T: Copy + Num {
fn new(ny_matris: &Vec<Vec<T>>) -> Self {
Self {
matris: ny_matris.to_vec(),
form: (2,3),
egenskaper: vec![Egenskaper::Rektangel]
}
}
}
fn multiplicera(&mut self, matris: &Matris<T>) -> Matris<f64>
where T: Copy + Clone + std::ops::Mul<Output=f64> + std::ops::AddAssign<f64>, {
assert_eq!(self.form.1, matris.form.0);
let (n, p) = (self.form.0, matris.form.1);
let mut c = vec![vec![0.0; p]; n];
for i in 0..n {
for j in 0..p {
let mut summa = 0.0;
for k in 0..self.form.1 {
// Error here on +=
summa += self.matris[i][k] * matris.matris[k][j];
}
c[i][j] = summa;
}
}
Matris::new(&c)
}
}
Please help!