在Rust中,是否可以使用模式匹配从[T; n]
的第一个k
元素构造[T; k]
?我可以使用[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;
型
这种事有可能发生吗?
1条答案
按热度按时间abithluo1#
如果
T
是copy,你可以很容易地做到这一点:字符串
如果
T
不是Copy
,但有一个便宜的Clone
,你也可以这样做:型
如果不是(克隆成本很高,或者
T
不是Clone
),可以通过分配来实现:型
如果一个分配是不可接受的,但你每晚都在,你可以使用
Iterator::next_chunk()
:型
最后,如果没有什么对你来说是足够的,你可以使用不安全的代码(但这应该是最后的手段):
型