我将我的问题减少到以下代码:
enum E {
E1,
}
fn f(e1: &E, e2: &E) {
match *e1 {
E::E1 => (),
}
match (*e1, *e2) {
(E::E1, E::E1) => (),
}
}
fn main() {}
Run Code Online (Sandbox Code Playgroud)
第一场比赛没问题,但第二场比赛无法编译:
error[E0507]: cannot move out of borrowed content
--> src/main.rs:9:12
|
9 | match (*e1, *e2) {
| ^^^ cannot move out of borrowed content
error[E0507]: cannot move out of borrowed content
--> src/main.rs:9:17
|
9 | match (*e1, *e2) {
| ^^^ cannot move out of borrowed content
Run Code Online (Sandbox Code Playgroud)
看来,这是因为我构建对一些借来的和防锈试运行e1,并e2进去.我发现如果我在我的枚举之前加上"#[derive(Copy,Clone)]",我的代码就会编译.
您可以通过从变量中删除取消引用运算符来匹配两个引用的元组:
enum E {
E1,
}
fn f(e1: &E, e2: &E) {
match *e1 {
E::E1 => (),
}
match (e1, e2) {
(&E::E1, &E::E1) => (),
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |