2022/09/24
はじめに
Rust の勉強を目的とし,Matrix クラスを作る.
それを通して得た知見を残す.
コード全体はこちら.
入門コース目次
- 入門 0 概要
- 入門 1 Struct とメソッド
- 入門 2 Unit Test
- 入門 3 演算子オーバーロードによるインデックスアクセス
- 入門 4 インスタンス生成用の自作マクロ
- 入門 5 module
- 入門 6 自作 Module を利用する
このページで作るもの
自分で作った module を利用する.
コード全体 & 解説
実装した各メソッドを試してみた.
&mut self
で実装した.add()
等を呼び出すためのインスタンスであるmat
は,mut
にする必要がある.
また,self
で実装した(移動する)メソッドであるflatten()
を呼び出した後は,mat
に対してメソッドを呼び出すことは出来ない.
もし呼び出したければ,mat.clone().flatten()
にすると良い.
src/main.rs
mod matrix;
fn main() -> Result<(), ()> {
let mut mat = matrix![[0, 1, 2], [3, 4, 5], [6, 7, 8]];
let mat_i = matrix![[1, 0, 0], [0, 1, 0], [0, 0, 1]];
mat.print();
mat_i.print();
mat.add(&mat_i)?;
mat.print();
mat.diff(&mat_i)?;
mat.print();
*mat.at_mut(0, 0) = 3;
mat.print();
let v = mat.flatten();
println!("{v:?}");
Ok(())
}
おわりに
マクロによるインスタンス生成と,メソッドを用いた値の変更を確認できた.