相关疑难解决方法(0)

导出Enum的特征副本时,"特征克隆未实现"

以下代码:

#[derive(Copy)]
enum MyEnum {
    Test
}
Run Code Online (Sandbox Code Playgroud)

给我这个错误:错误:core::clone::Clone没有为类型MyEnum[E0277] 实现特征

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

enums copy rust

11
推荐指数
2
解决办法
2164
查看次数

运营商超载"无法摆脱借来的内容"

当使用具有运算符重载的类时,我从简单的辅助方法获得编译错误.这是一个独立的测试(从我的真实代码简化,但仍然证明了问题):

use std::ops::{Add, Sub, Neg, Mul, Div};

#[derive(Debug, Eq, PartialEq)]
pub struct Money {
    cents: i64,
}
impl Money {
    pub fn new(cents: i64) -> Money {
        Money { cents: cents }
    }
}
impl Add for Money {
    type Output = Money;
    fn add(self, other: Money) -> Money {
        Money { cents: self.cents + other.cents }
    }
}
impl Mul<Money> for f64 {
    type Output = Money;
    fn mul(self, rhs: Money) -> Money {
        Money { cents: (self * …
Run Code Online (Sandbox Code Playgroud)

rust

8
推荐指数
1
解决办法
669
查看次数

如何移出作为选项的struct字段?

我想收集结构的更改并立即应用它们.基本大纲如下所示:

enum SomeEnum {
    Foo,
    Bar,
}

struct SomeStruct {
    attrib: SomeEnum,
    next_attrib: Option<SomeEnum>,
}

impl SomeStruct {
    pub fn apply_changes(&mut self) {
        if let Some(se) = self.next_attrib {
            self.attrib = se;
        }
        self.next_attrib = None;
    }
}
Run Code Online (Sandbox Code Playgroud)

这会产生以下编译器错误:

error[E0507]: cannot move out of borrowed content
  --> src/lib.rs:13:27
   |
13 |         if let Some(se) = self.next_attrib {
   |                     --    ^^^^ cannot move out of borrowed content
   |                     |
   |                     hint: to prevent move, use `ref se` or `ref mut se` …
Run Code Online (Sandbox Code Playgroud)

copy rust borrow-checker

6
推荐指数
1
解决办法
723
查看次数

标签 统计

rust ×3

copy ×2

borrow-checker ×1

enums ×1