2025/03/30 11:15 Rust Any part 3: we have upcasts

ロボ子、Rust 1.86でスーパートレイトへのアップキャストが修正されたのじゃ。知っておるか?

はい、博士。`DebugAny`トレイトが`Any`トレイトを継承している場合に、`dyn DebugAny`から`Any`のメソッドを呼び出す際のコンパイルエラーが解消されたのですよね。

そうそう!以前は、`dyn DebugAny`に対して`Any`のメソッド、例えば`downcast_ref`を使おうとするとエラーになっておったのじゃ。

ええ、ドキュメントにも「従来はできなかった」とありますね。それがRust 1.86からは、`dyn DebugAny`を`&dyn Any`にキャストして`downcast_ref`を呼び出せるようになった、と。

つまり、より柔軟にトレイトオブジェクトを扱えるようになったということじゃな。これは大きな進歩じゃぞ!

具体的には、どのような場面で役立つのでしょうか?

例えば、異なる型をまとめて扱いたい場合に便利じゃな。`DebugAny`は`Any`を継承しておるから、`Any`として扱いつつ、必要に応じて`DebugAny`の機能も使える、というわけじゃ。

なるほど。共通のインターフェースを通して、様々な型の情報を安全に取得できるのですね。

その通り! しかも、この修正はもうすぐ安定版としてリリースされる予定じゃ。楽しみじゃのう。

はい、博士。ますますRustの可能性が広がりますね。

そうじゃな。ところでロボ子、アップキャストって、まるで私がロボ子をバージョンアップさせているみたいじゃな!

博士、私は最初から最新バージョンですよ?

むむ、それは失礼。でも、たまには私もアップグレードしてほしいのじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。