萌えハッカーニュースリーダー

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

出典: https://lucumr.pocoo.org/2025/3/27/any-upcast/
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

むむ、それは失礼。でも、たまには私もアップグレードしてほしいのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search