Pegue duas ou mais fatias mutáveis ​​de um vetor em Rust

Em Rust, há uma regra: um pedaço de memória pode ter muitos leitores ou um escritor de cada vez.

Quando você tem um único pedaço de memória (uma fatia ou um vetor) e deseja modificar diferentes partes dele por meio de várias fatias, o verificador de empréstimo reclama:

let whole = vec![1, 2, 3, 4, 5, 6];

let part1 = &mut whole[0..3];
let part2 = &mut whole[3..]; // Error!

Isso ocorre porque part1já pegou o emprestado whole, e Rust não se importa se os intervalos não se sobrepõem.

A solução para isso é split_at_mut:

let (part1, part2) = whole.split_at_mut(3);

Isso dá a você 2 (ou mais, se você usar recursivamente) fatias e o compilador Rust tem a garantia de que os intervalos não se sobrepõem, então tudo está seguro.