我试图从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 ×1