Como operar em 2 fatias mutáveis de uma matriz Rust?

Eu tenho uma função que precisa operar em duas partes de uma única matriz. O objetivo é ser capaz de construir um#[nostd] alocador que pode retornar uma fatia variável de uma matriz maior para o chamador e ficar com o restante da matriz para futuras alocações.

Aqui está um código de exemplo que falha:

fn split<'a>(mut item: &'a mut [i32], place: usize) -> (&'a mut [i32], &'a mut [i32]) {
    (&mut item[0..place], &mut item[place..])
}

fn main() {
    let mut mem: [i32; 2048] = [1; 2048];
    let (mut array0, mut array1) = split(&mut mem[..], 768);
    array0[0] = 4;
    println!("{:?} {:?}", array0[0], array1[0]);
}

o erro é o seguinte:

error[E0499]: cannot borrow `*item` as mutable more than once at a time
 --> src/main.rs:2:32
  |
2 |     (&mut item[0..place], &mut item[place..])
  |           ----                 ^^^^ second mutable borrow occurs here
  |           |
  |           first mutable borrow occurs here
3 | }
  | - first borrow ends here

Esse padrão também pode ser útil para a classificação rápida no local etc.

Existe algo inseguro em ter duas referências mutáveis para fatias sem sobreposição da mesma matriz? Se não há maneira pura de ferrugem, existe um "seguro"unsafe&nbsp;encantamento que lhe permitirá prosseguir?