Rust, Design Patterns, Matrix Factorization, Numerical Methods, Software Engineering.
implementation: first some setters as the constructor sets the values to None by default. If the value being set is not appropriate we can reject it by setting or maintaining the value to None. impl<T> MatrixBuilder<T> where T: Numeric { pub fn new() -> Self { MatrixBuilder { rows: None, cols: