W.I.S. Laboratory
menu-bar

Rust


Rustでダックタイピングのようなことをしてみる

RustにはC++の関数テンプレートほど柔軟な機能がない(と思う)ので、「structならなんでも来い」的な関数を定義することができない。(と思う)
正確にはどんな型でもOK的な関数は作れるのだが、そこで受け取った構造体に紐づいた関数を呼び出すことができない。
純粋なダックタイピングではないが、複数の構造体をトレイトの型にキャストすることで、ダックタイピングもどきをやってみた。
本来ダックタイピングとは、「継承関係にない複数のインスタンスすべてに特定のメソッドやメンバがあることを想定して、実行時にそれを確かめながらアクセスする」ことなので、正確にはダックタイピングではない。
親に共通のトレイトがいるので、特定のメソッドがあることは保証付きだからだ。
あとトレイト型にキャストしている影響でフィールドにアクセスできないのはご愛嬌。


[ 戻る ]
saluteweb