小编Dav*_*nds的帖子

如何从生锈的Vec中提取两个可变元素

我试图从Vec中提取两个元素,它总是包含至少两个元素.这两个元素需要可变地提取,因为我需要能够在两个元素上更改值作为单个操作的一部分.

示例代码:

struct Piece {
  x: u32,
  y: u32,
  name: &'static str
}

impl Piece {
  fn exec(&self, target: &mut Piece) {
    println!("{} -> {}", self.name, target.name)
  }
}

struct Board {
  pieces: Vec<Piece>
}

fn main() {
    let mut board = Board {
      pieces: vec![
        Piece{ x: 0, y: 0, name: "A" },
        Piece{ x: 1, y: 1, name: "B" }
      ]
    };

    let mut a = board.pieces.get_mut(0);
    let mut b = board.pieces.get_mut(1);
    a.exec(b);
}
Run Code Online (Sandbox Code Playgroud)

目前,这无法使用以下编译器错误构建:

piece.rs:26:17: 26:29 error: …
Run Code Online (Sandbox Code Playgroud)

rust

7
推荐指数
1
解决办法
1063
查看次数

标签 统计

rust ×1