#[deriving(Trait)] normally relies on the constituent types of the struct or enum also implement Trait, and currently, if they don't, the error messages are unclear. e.g. in the following code, the problem is [f64, .. 3] doesn't implement Clone.
#[deriving(Clone)]
struct V {
v : [f64, ..3]
}
fn main() {}
tmp.rs:1:11: 1:16 error: mismatched types: expected `[f64, .. 3]` but found `&[f64, .. 3]` (expected vector but found &-ptr)
tmp.rs:1 #[deriving(Clone)]
(This particular error message is because there is a Clone impl for &T, and that one is used if there is no Clone impl for T.)
#[deriving(Trait)]normally relies on the constituent types of thestructorenumalso implementTrait, and currently, if they don't, the error messages are unclear. e.g. in the following code, the problem is[f64, .. 3]doesn't implementClone.(This particular error message is because there is a
Cloneimpl for&T, and that one is used if there is noCloneimpl forT.)