タイトルほぼそのまま。最近はPythonもSVGも捨ててRustにハマってます。 動機 研究の実験コードをRustで書こうと血迷った結果、threadpoolを書く必要が出てきて、そのthreadpoolのqueueをFIFOやpriority queueに変える必要がでてきた。 具体的にはtraitをjavaでいうinterfaceのようにして、振る舞いを変更したい。 古来のOOPにおいては、strategy patternという名前がついているので、それをrustでやりたい。 調べる シングルスレッドは、偉大なる先人が既にやっていた。 github.com 結論 シングルスレッドにおいては、trait Behaviourに対して、Box<Behaviour+'a> をつかう。 雰囲気はこんなかんじ。 trait Behaviour { fn run(&self); } struct Y