"特质克隆未实现"在为Enum派生特征副本时

时间:2015-06-11 13:54:18

标签: enums copy rust

以下代码:

#[derive(Copy)]
enum MyEnum {
    Test
}

给我这个错误: 错误:未对类型core::clone::Clone实施特性MyEnum [E0277]

为什么会这样,我该如何解决?

2 个答案:

答案 0 :(得分:16)

Copy trait is a subtrait of Clone,因此如果您实施Clone,则始终需要实施Copy

#[derive(Copy, Clone)]
enum MyEnum {
    Test
}

这是有道理的,因为CopyClone都是复制现有对象的方式,但具有不同的语义。 Copy只需复制构成对象的位(如C中的memcpy)即可复制对象。 Clone可能更昂贵,可能涉及分配内存或复制系统资源。任何可以与Copy重复的内容也可以与Clone重复。

答案 1 :(得分:5)

这是因为特征-(void)loadimage{ NSString *workSpacePath=[[self applicationDocumentsDirectory] stringByAppendingPathComponent:@"your image-name"]; UIImageView *myimage=[UIImageView alloc] initWithFrame:CGRectMake(0,0,20,20)]; myimage.image=[UIImage imageWithData:[NSData dataWithContentsOfFile:workSpacePath]]; [self.view addSubView:myimage]; [myimage release]; 取决于特征Copy。 编译器不会尝试为您推断和实现该特征。 所以你必须明确地实现克隆特征。

就像那样:

Clone