为什么打印时会出现“预期参考`&usize`”?

Whi*_*gon 6 rust

我在 Rust 中有这个函数:

fn printboard(board: Vec<u32>) {
    println!("|  |{:>2$} {:>2$} {:>2$} {:>2$} {:>2$} {:>2$}|  |", 
        board[1], board[2], board[3], board[4], board[5], board[6]);
}
Run Code Online (Sandbox Code Playgroud)

由于某种原因,代码在 处抛出错误board[3],显示“预期的 usize,发现了 u32”。对于任何其他board[x]表达式都不会发生这种情况。知道为什么会发生这种情况吗?

这是完整的错误:

fn printboard(board: Vec<u32>) {
    println!("|  |{:>2$} {:>2$} {:>2$} {:>2$} {:>2$} {:>2$}|  |", 
        board[1], board[2], board[3], board[4], board[5], board[6]);
}
Run Code Online (Sandbox Code Playgroud)

kmd*_*eko 6

如果每个板元素应以 2 的宽度打印,则应省略$s:

fn printboard(board: Vec<u32>) {
    println!("|  |{:>2} {:>2} {:>2} {:>2} {:>2} {:>2}|  |", 
        board[1], board[2], board[3], board[4], board[5], board[6]);
}
Run Code Online (Sandbox Code Playgroud)

请参阅文档中的宽度std::fmt

格式说明符{:>2}意味着以宽度 2 右对齐,而{:>2$}意味着以第二个参数指定的宽度右对齐(board[3]从 0 索引开始)。此宽度参数必须为 a usize,这就是您收到类型错误的原因。