【发布时间】:2021-05-30 00:47:37
【问题描述】:
我有一个函数用于在连接 4 中进行移动,该函数需要 3 个参数。主要问题是 square 变量超出了 for 循环的范围,因此必须借用它,但是我不能将 &i32 转换为 usize。
fn make_move<'playing>(board: &'playing Vec<&str>, column: i32, turn: &'playing i32) -> &'playing Vec<&'playing str> {
let mut square = column;
let new_board = board;
for i in 0..6 {
if new_board[(&square) as usize] == " " {
square = &square + 7;
} else {
if turn % 2 == 0 {
new_board[(&square - 7) as usize] = "●";
} else {
new_board[(&square - 7) as usize] = "○";
}
}
}
return new_board;
}
error[E0606]: casting `&i32` as `usize` is invalid
--> src/lib.rs:6:22
|
6 | if new_board[(&square) as usize] == " " {
| ---------^^^^^^^^^
| |
| cannot cast `&i32` as `usize`
| help: dereference the expression: `*(&square)`
我也刚开始使用 Rust,所以我确信我的逻辑有缺陷,也许这是一个愚蠢的错误,但我们将不胜感激。
【问题讨论】:
标签: rust