Rustを勉強中3
プログラムをよりオブジェクト指向チックに扱うために以下の構造を示す機能を勉強した。
実践的なアプリケーションを書いてみよう! Rustの構造化プログラミング【第二言語としてのRust】
写経物
関数において、型による再定義をしなくて良くなる。
golangにはない機能で、関数抽象化機能としてはすごい使いやすい。
-
- 構造体
構造体単体で利用するというよりも、トレイトと一緒に利用すると強力なポリモーフィズムを実現できる。
-
- 列挙型
match式と一緒に利用すると、直感的な書き方で処理を記述できる。
-
- トレイト
ポリモーフィズムを実現する手段の1つ
Rust自体は継承といった機能は、トレイトと呼ばれる多重継承を許可してコンストラクタを持たない抽象クラス
のようなものを使う
※javaやscalaに見られる抽象クラスとトレイトの違いは以下の述べられている。
https://gist.github.com/gakuzzzz/10081860:title = trait と abstract class の使い分け
-
- トレイト境界
あるトレイトを実装した型を、ジェネリクスで受け取る
duck_goはDuckLikeを実装した、Duckは受け取れるが、例えばコメントアウトしているfloatなどはDuckLikeを実装していないためコンパイルエラーになる。