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

如何用模式匹配将Rust中[i32;6]数组拆分为三个[i32;2]子数组?

Rust将[i32;6]拆分为三个[i32;2]子数组的实现方式

你想要的那种直接通过嵌套数组模式拆分的写法,目前Rust还不支持——Rust的数组模式只能逐个匹配数组元素,无法直接将连续元素绑定为固定长度的子数组变量。不过你可以通过模式匹配解构所有元素后组合的方式实现,比手动索引更安全(长度不匹配会编译报错,而非运行时panic)。

推荐实现方式(模式匹配+组合)

let arr6 = [0, 1, 2, 3, 4, 5];
// 先解构出所有6个元素
let [a0, a1, b0, b1, c0, c1] = arr6;
// 组合成三个固定长度子数组
let sub1: [i32; 2] = [a0, a1];
let sub2: [i32; 2] = [b0, b1];
let sub3: [i32; 2] = [c0, c1];

简洁的手动索引方式(注意越界风险)

如果你追求代码简洁,也可以手动索引,但要确保索引正确(你原来的sub3索引写错了,应该取第4和第5个元素):

let arr6 = [0, 1, 2, 3, 4, 5];
let sub1 = [arr6[0], arr6[1]];
let sub2 = [arr6[2], arr6[3]];
let sub3 = [arr6[4], arr6[5]]; // 修正后的正确索引

为什么你期望的写法不行?

你尝试的[sub1 @ [_; 2], sub2 @ [_; 2], sub3 @ [_; 2]]这种嵌套数组模式,Rust编译器无法识别——因为数组模式的语法要求匹配的是整个数组的元素序列,而非将连续元素打包为子数组。这种语法目前不在Rust的支持范围内。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:52:11