2022/09/21
はじめに
Rust の勉強を目的とし,Matrix クラスを作る.
それを通して得た知見を残す.
コード全体はこちら.
入門コース目次
- 入門 0 概要
- 入門 1 Struct とメソッド
- 入門 2 Unit Test
- 入門 3 演算子オーバーロードによるインデックスアクセス
- 入門 4 インスタンス生成用の自作マクロ
- 入門 5 module
- 入門 6 自作 Module を利用する
作るもの
行列を扱うことをイメージした簡単なクラス(Struct)を作る.
全体で学べる項目
- Struct
- Generics
- Move
- macro (2次元ベクタ)
- 演算子オーバーロード(インデックスアクセス)
- ユニットテスト
- Zip によるイテレート
プロジェクト作成
$ cargo new matrix
$ cd matrix
module の全体像
ここでのソースファイルは全てsrc
内に配置.
src/
├── main.rs
└── matrix
├── index_mut.rs
├── index.rs
├── macros.rs
├── matrix.rs
├── matrix_tests.rs
└── mod.rs
各ファイル
src
内各ファイルについて
main.rs
Matrix module を利用するコード.
matrix
mod.rs
Matrix module の Visibility などを記述.
matrix.rs
Matrix module の Struct の定義やロジックを記述.
matrix_tests.rs
Matrix struct のテストを記述.src/matrix/matrix.rs
の下に一緒に書いてもよいが,ファイルが長くなりすぎたので分割してみた.
macros.rs
Matrix インスタンスを作成するためのマクロを記述.
index.rs
Matrix インスタンスの値にインデックスアクセスするための演算子オーバーロード.
→ 入門 3 演算子オーバーロードによるインデックスアクセス
index_mut.rs
Matrix インスタンスの要素をインデックス指定で変更するための演算子オーバーロード.
→ 入門 3 演算子オーバーロードによるインデックスアクセス
おわりに
まずは簡単なクラスを自分で作ってみると,かなり勉強になりますね!
マクロはもっと様々な使い方ができそうなので,もっと勉強したい点.
参考
各項目を書くための調べた内容はそれぞれ記述するとして,全体を通して参考にさせてもらったのは以下です.
-「プログラミング Rust」 - オライリー・ジャパン