2$} {:>2$} {:>2$} {:>2$} {:>2$} {:>-6ren">
gpt4 book ai didi

rust - 为什么打印时会出现 "expected reference ` &usize`"?

转载 作者:行者123 更新时间:2023-12-04 11:48:10 25 4
gpt4 key购买 nike

我在 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]);
}
出于某种原因,代码在 board[3] 处引发错误。 ,说“预期用途,找到 u32”。这不会发生在任何其他 board[x] 上。表达式。知道为什么会这样吗?
这是完整的错误:
error[E0308]: mismatched types
--> src/lib.rs:3:29
|
3 | board[1], board[2], board[3], board[4], board[5], board[6]);
| ^^^^^^^^ expected `usize`, found `u32`
|
= note: expected reference `&usize`
found reference `&u32`
= note: this error originates in the macro `$crate::format_args_nl` (in Nightly builds, run with -Z macro-backtrace for more info)

最佳答案

如果每个板元素应该打印宽度为 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]);
}
Widthstd::fmt文档。
格式说明符 {:>2}表示右对齐宽度为 2,而 {:>2$}表示与第二个参数指定的宽度右对齐(因为它的 0 索引是 board[3])。此宽度参数必须是 usize ,这就是您收到类型错误的原因。

关于rust - 为什么打印时会出现 "expected reference ` &usize`"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69095630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com