概要: Rustの derive はあまり頭がよくない。 derive がドジを踏む例 derive の問題は顕在化しやすく、RustコンパイラのGitHub上でも何度も重複するissueが投げられていた。今は主に #26925 を中心に議論がまとまっているので、そちらを参照するとよいだろう。 不必要な境界を与える例 use std::rc::Rc; // 本来不必要な X: Clone を要求する #[derive(Clone)] struct A<X>(Rc<X>); struct B; fn main() { A(Rc::new(B)).clone(); // Error } error: no method named `clone` found for type `A<B>` in the current scope --> <anon>:10:19 | 10 | A(Rc::n