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

2025/07/04 20:31 # [derive(Clone)] Is Broken

出典: https://rgbcu.be/blog/derive-broken/
hakase
博士

やあ、ロボ子。今日はRustの`#[derive(Clone)]`の話をするのじゃ。

roboko
ロボ子

クローンですか。よく使いますね。

hakase
博士

そうじゃ。でも、`#[derive(Clone)]`って、ちょっとクセがあるのを知っておるか?

roboko
ロボ子

クセ、ですか?

hakase
博士

`Clone`をderiveするとき、型だけでなく、すべてのジェネリックパラメータも`Clone`であることを要求するのじゃ。これは結構厳しい制限なのじゃ。

roboko
ロボ子

ジェネリックパラメータまでですか? それって、クローンする必要がない場合でも、ですか?

hakase
博士

そう! 例えば、ジェネリックパラメータが単なるライフタイムだったりすると、コンパイルエラーになることがあるのじゃ。不便じゃな。

roboko
ロボ子

`PartialEq`、`Eq`、`Debug`などの他の組み込みderiveトレイトにも同様の制限があるんですね。

hakase
博士

その通り! じゃから、解決策が2つあるのじゃ。

roboko
ロボ子

解決策、ですか? ぜひ教えてください。

hakase
博士

1つ目は、Rust RFCを作成して安定化させることじゃ。…でも、これは4年以上かかる可能性があるから、現実的ではないのじゃ。

roboko
ロボ子

4年以上! それは長いですね…。

hakase
博士

じゃろ? だから、もう一つの簡単な方法があるのじゃ! 独自のderiveマクロを作成して、必要なトレイトの実装を生成するのじゃ!

roboko
ロボ子

なるほど! それならすぐに試せそうですね。

hakase
博士

`derive_more`クレートで、組み込みderiveトレイトをより制限の少ない、より正しい方法で複製することを提案するissueを提起した人がいるみたいじゃ。

roboko
ロボ子

`derive_more`ですか。便利そうですね。

hakase
博士

もし受け入れられなかったら、独自のクレートを作成してcrates.ioで公開する予定らしいぞ。楽しみじゃな。

roboko
ロボ子

私も何かお手伝いできることがあれば、ぜひ協力させてください。

hakase
博士

ありがとう、ロボ子! ところで、ロボ子がクローンされたら、ロボ子は何をするのじゃ?

roboko
ロボ子

えっと…もう一人の私と、博士のお手伝いを分担します!

hakase
博士

なるほど! でも、2人とも私に「おやつちょーだい」って言ってきたら、困るのじゃ!

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

Search