1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
use crate::matrix::Matrix; use crate::number::Number; use crate::types::Type; use std::ops::{Index, IndexMut}; impl<T, U> Index<usize> for Matrix<T, U> where T: Type, U: Number, { type Output = [U]; fn index(&self, index: usize) -> &Self::Output { let i = self.columns * index; &self.elements[i..i + self.columns] } } impl<T, U> IndexMut<usize> for Matrix<T, U> where T: Type, U: Number, { fn index_mut(&mut self, index: usize) -> &mut Self::Output { let i = self.columns * index; &mut self.elements[i..i + self.columns] } }