はじめに
#NO IMAGEThe Rust Programming Language 日本語版 - The Rust Programming Language 日本語版
を読んでいる
お勉強
#NO IMAGEオブジェクト指向言語の特徴 - The Rust Programming Language 日本語版
- oopか
- いいね
- 前回はカプセル化して振る舞いの固定とアクセスの制限をしようという話だった
メモ
#NO IMAGEオブジェクト指向言語の特徴 - The Rust Programming Language 日本語版
-
継承だうわーーーー
- 嫌な思い出しかない
- 納得できるか
-
まぁトレイトが近いと予想
継承は、近年、多くのプログラミング言語において、プログラムの設計解決策としては軽んじられています。
しばしば必要以上にコードを共有してしまう危険性があるからです。
- ふむ
- というかコードが読みづらい
Rustは、継承ではなくトレイトオブジェクトを使用するという異なるアプローチを取っています。
-
まぁそうだよね
-
なんかごちゃごちゃ書いてあるけど文字よりコードが欲しいな
-
普通にクラスの継承とトレイトの違いの話ししてるだけだな
-
うーん、あんまり言うところないな
- トレイトの使い方はまだいい
- むしろ
Boxのほうが具体な使い方がわからん
-
普通にトレイト習った時に想定した内容と同じだな
単相化の結果吐かれるコードは、 スタティックディスパッチを行い、これは、コンパイル時にコンパイラがどのメソッドを呼び出しているかわかる時のことです。 これは、ダイナミックディスパッチとは対照的で、この時、コンパイラは、コンパイル時にどのメソッドを呼び出しているのかわかりません。
- 別の話になってきたな
トレイトオブジェクトを使用すると、コンパイラはダイナミックディスパッチを使用しなければなりません。
- ほーん
実行時に、トレイトオブジェクト内でポインタを使用して、 コンパイラは、どのメソッドを呼ぶか知ります。この検索は、スタティックディスパッチでは発生しない実行時コストを招きます。
- オーバーヘッドがでるんだ
まとめ
#- 今回はトレイトを学んだ時に思ったことがそのまま記載されていた
- トレイトオブジェクトを実装するとオーバーヘッドが出るということが分かった
次ここ
NO IMAGEオブジェクト指向デザインパターンを実装する - The Rust Programming Language 日本語版