在 Rust 中,是否可以使用模式匹配[T; k]
从 a 的第一个k
元素构造 a [T; n]
?我想避免这种情况:
// k = 3 here
let [c1, c2, c3, ..] = my_array;
let front = [c1, c2, c3];
而是做这样的事情(虚构的语法):
let front: [T; 3];
[..front, ..] = my_array;
// or...
let [..front: [T; 3], ..] = my_array;
// or...
let [front @ [_; 3], ..] = my_array;
这样的事情可能吗?
如果
T
是复制,您可以轻松做到这一点:如果
T
没有Copy
但有便宜的Clone
,你也可以这样做:如果不是(克隆很昂贵或
T
不是Clone
),您可以通过分配来完成:如果分配不可接受,但您使用的是 nightly,则可以使用
Iterator::next_chunk()
:最后,如果没有什么足够的,你可以使用不安全的代码来做到这一点(但这实际上应该是最后的手段):