Comment idiomatique de la copie d'une tranche?

En Aller, la copie des tranches de série-tarif et ressemble à ceci:

# It will figure out the details to match slice sizes
dst = copy(dst[n:], src[:m])

Dans la Rouille, je ne pouvais pas trouver une méthode similaire de remplacement. Quelque chose que je suis venu avec ressemble à ceci:

fn copy_slice(dst: &mut [u8], src: &[u8]) -> usize {
    let mut c = 0;
    for (&mut d, &s) in dst.iter_mut().zip(src.iter()) {
        d = s;
        c += 1;
    }
    c
}

Malheureusement, je reçois cette compilation d'erreur que je n'arrive pas à résoudre:

error[E0384]: re-assignment of immutable variable `d`
 --> src/main.rs:4:9
  |
3 |     for (&mut d, &s) in dst.iter_mut().zip(src.iter()) {
  |               - first assignment to `d`
4 |         d = s;
  |         ^^^^^ re-assignment of immutable variable

Comment puis-je définir d? Est-il un meilleur moyen pour copier une tranche?

Pourriez-vous développer un peu plus sur pourquoi vous voulez copier les données dans les tranches autour? J'avais l'habitude de s'attendre à soit prendre une référence à l'original ou pour copier les données de quelque chose qui possède la copie.

OriginalL'auteur Byron | 2015-01-29