Closed
Description
The example:
use std::sync;
trait Trait {}
struct DontCloneMe {
pub value: int
}
impl Trait for DontCloneMe {}
#[deriving(Clone)]
struct CloneMe<T: Trait> {
pub arc: sync::Arc<T>,
}
fn main() {
let v = CloneMe {
arc: sync::Arc::new(DontCloneMe { value: 0 })
};
v.clone();
}
Without Trait it would work as expected. With trait deriving seems to succeed, but compilation fails on calling clone:
demo.rs:21:7: 21:14 error: type `CloneMe<DontCloneMe>` does not implement any method in scope named `clone`
demo.rs:21 v.clone();
^~~~~~~
error: aborting due to previous error
If this is invalid deriving (though I don't see reasons why), it should fail with some meaningful message.
Metadata
Metadata
Assignees
Labels
No labels