Em Rust, é possível usar correspondência de padrões para construir [T; k]
a partir dos primeiros k
elementos de a [T; n]
? Eu gostaria de evitar isso:
// k = 3 here
let [c1, c2, c3, ..] = my_array;
let front = [c1, c2, c3];
e em vez disso faça algo assim (sintaxe inventada):
let front: [T; 3];
[..front, ..] = my_array;
// or...
let [..front: [T; 3], ..] = my_array;
// or...
let [front @ [_; 3], ..] = my_array;
Algo assim é possível?
Se
T
for uma cópia, você pode fazer isso facilmente:Se
T
não for,Copy
mas tiver um preço baratoClone
, você também pode fazer:Se não for (a clonagem é cara ou
T
não éClone
), você pode fazer isso com uma alocação:Se uma alocação não for aceitável, mas você estiver trabalhando todas as noites, poderá usar
Iterator::next_chunk()
:E finalmente, se nada for suficiente para você, você pode fazer isso usando código inseguro (mas este deve ser o último recurso):