You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rust调用println!打印Vec<u32>元素时出现expected &usize错误原因?

问题根源

这个错误和board的索引无关,本质是格式化字符串语法使用错误导致的类型不匹配。

语法说明

Rust的格式化占位符中,{:>N$}表示的含义是:

  • > 代表右对齐
  • N$ 代表「取参数列表中索引为N的参数的值作为当前对齐的宽度」,不是你以为的「固定宽度为N」。

你代码里所有占位符都写了{:>2$},就意味着所有占位符的对齐宽度都要取参数列表中索引为2的参数的值。你的参数列表索引从0开始计数:

  • 索引0:board[1]
  • 索引1:board[2]
  • 索引2:board[3]
  • 索引3:board[4]
  • 索引4:board[5]
  • 索引5:board[6]

对齐宽度要求是usize类型,但你Vec<u32>里存的元素都是u32类型,类型不匹配,自然就会在board[3]的位置抛出类型错误。其余board[x]没有被当作宽度参数使用,所以不会触发报错。

修复方案

你要的是固定宽度为2的右对齐效果,把所有占位符里的2$改成2即可:

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

内容的提问来源于stack exchange,提问作者Whirlagon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:48:02