Wie erstelle ich ein Vec von einer Palette und mische es?

Ich habe den folgenden code:

extern crate rand;

use rand::{thread_rng, Rng};

fn main() {
    let mut vec: Vec<u32> = (0..10).collect();
    let mut slice: &[u32] = vec.as_mut_slice();

    thread_rng().shuffle(slice);
}

und die folgende Fehlermeldung erhalten:

error[E0308]: mismatched types
 --> src/main.rs:9:26
  |
9 |     thread_rng().shuffle(slice);
  |                          ^^^^^ types differ in mutability
  |
  = note: expected type `&mut [_]`
             found type `&[u32]`

Ich glaube, ich verstehe, dass der Inhalt von Vektoren und Scheiben ist unveränderlich, und das verursacht die Fehler hier, aber ich bin mir nicht sicher.

Die Signatur von as_mut_slice ist pub fn as_mut_slice<'a>(&'a mut self) -> &'a mut [T], so dass die Scheibe sollte veränderbar, aber es irgendwie nicht.

Ich weiß, dass es eine einfache Lösung, aber ich versuchte mein bestes und konnte es nicht bekommen, um zu arbeiten.

InformationsquelleAutor le_me | 2014-09-25
Schreibe einen Kommentar