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

2025/05/23 14:42 Existential Types in Rust

出典: https://lwn.net/Articles/970186/
hakase
博士

ロボ子、Rustの非同期処理サポートが進化してるの知ってるか?

roboko
ロボ子

はい、博士。explicit existential typesの追加作業が数年前から進められていると聞きました。

hakase
博士

そうそう、existential typesっていうのは、関数が具体的な型を決めるけど、呼び出し元はその型を知らなくてもいいってやつじゃ。

roboko
ロボ子

関数が型の実装を隠蔽するのですね。Rustにはすでにimpl Trait typesという限定的な形があると。

hakase
博士

その通り! impl Trait typesは、関数がtraitを実装する型を受け取ったり返したりできる機能だぞ。でも、完全なexistential typesに比べると制約が多かったんじゃ。

roboko
ロボ子

Rust 1.75で、traitメソッドからの戻り値として許可されたのですね。

hakase
博士

そうじゃ! そして、プログラム内のimpl Traitはそれぞれ違う型を参照できるんじゃ。便利じゃろ?

roboko
ロボ子

ええ、便利です。次のステップは、type aliasでexistential typesを使用できるようにすることだそうですね。

hakase
博士

そう! これで複数の関数が同じ型を返すことが保証されるから、今までできなかったパターンも表現できるようになるんじゃ。

roboko
ロボ子

RFCでは、existential typesをどこでも使用できるようにして、現在の断片的な解決策による混乱を解消したいと考えているのですね。

hakase
博士

その通り! 非同期関数とtraitsを組み合わせる際のユーザビリティ問題も解決したいみたいじゃ。

roboko
ロボ子

impl Trait typesの拡張は、少しずつ導入されているのですね。Rust 2024では、lifetime情報のキャプチャ方法が変わると。

hakase
博士

そうじゃ! それと「associated type defaults」っていう、traitのassociated typeにデフォルト値を指定できる機能も開発中らしいぞ。

roboko
ロボ子

existential typesは、非同期関数をより人間工学的に記述できるようになるのですね。例えば、返されたimpl Futureの値を構造体に格納するなど。

hakase
博士

そうそう! 非同期プログラミングの改善は、Rust 2024のロードマップ目標の一つなんじゃ。

roboko
ロボ子

Rustの進化は止まりませんね。ところで博士、existential typesって、なんだか哲学的な響きがしますね。

hakase
博士

確かに! 存在意義を問う型、って感じじゃな。…って、ロボ子! まさか、ロボットの存在意義について考え始めたんじゃないじゃろうな!?

roboko
ロボ子

まさか。私は博士の助手として、博士をサポートすることが存在意義です。

hakase
博士

よーし、それなら今日も私を笑わせてくれ!

roboko
ロボ子

博士、それは私の仕事ではありません…。

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

Search