Я пытаюсь заменить элемент массива на основе индекса, предоставленного пользователем (вход терминала), но я получаю следующую ошибку:
--> src/main.rs:30:17
|
30 | board[movement] = fire;
| ^^^^^^^^^^^^^^^ slice indices are of type `usize` or ranges of `usize`
|
= help: the trait `std::slice::SliceIndex<[char]>` is not implemented for `u32`
= note: required because of the requirements on the impl of `std::ops::Index<u32>` for `[char]`
И это мой код:
use std::io;
use std::io::Write;
fn main() {
let mut board: [char; 9] = [' '; 9];
let fire: char = '?';
// let water: char = '?';
let mut movement = String::new();
let valid_cells = 1..9;
loop {
print!("Please input your movement: ");
io::stdout().flush().unwrap();
io::stdin()
.read_line(&mut movement)
.expect("Failed to read line!");
let movement: u32 = match movement.trim().parse() {
Ok(num) => num,
Err(_) => {
println!("That's not a valid number!");
continue;
}
};
match valid_cells.contains(&movement) {
true => {
board[movement] = fire;
}
_ => {
println!("That's not a valid cell!");
continue;
}
}
for (i, x) in board.iter().enumerate() {
print!("| {}: {}", i, x);
if (i + 1) % 3 == 0 {
println!("\n");
}
}
if !board.contains(&' ') {
break;
}
}
}
Я новичок в Rust и не могу найти решение этой ошибки. Заранее спасибо!