Wie gebe ich eine eigene array von einer Funktion?

Ich bin ein Rost Neuling versuchen, herauszufinden, die Sprache durch das spielen mit ihm. Ich getroffen habe einige Probleme, die versuchen, auf Rückgabe eines Arrays aus einer Funktion:

struct Widget {
  thingies: ~[int]
}

impl Widget {
    fn new() -> Widget {
        Widget { thingies: ~[4, 8, 15, 16, 23, 42] }
    }

    fn somethings(&self) -> ~[int] {
        self.thingies
    }
}

fn main() {
   let widget = Widget::new();
   let wotsits = widget.somethings();
}

Diese natürlich fehl Kompilierung mit diesem Fehler:

pointers.rs:11:8: 11:21 error: cannot move out of dereference of & pointer
pointers.rs:11         self.thingies

In diesem Fall-code-Beispiel sieht aus Sorten, alles, was ich versuche zu tun, ist ziehen Sie ein array aus einer implementierten Struktur. Die geliehene Zeiger ist nicht wichtig, es ist nur, wie ich versuche, die Daten zu speichern.

Irgendwelche Tipps, Extrakt mein array richtig?

Btw, ich bin mit Rost 0.8

  • ~ ist ein einmalige Zeiger und es kann nur einer von Ihnen (den gleichen Wert). Sie können nicht kopiert werden (Aliasing), wie Sie in raw-C-Zeigern. Versuchen, erstellen Sie einen anderen Wert (den Rückgabewert) bewegt sich der Wert aus dem ursprünglichen Zeiger, die thingies und ganzen self undefiniert, was natürlich nicht erlaubt. Sie meinte wahrscheinlich die Rückgabe eines geliehenen Zeiger, nicht zum mitnehmen self.thingies.
  • ~[T] heißt ein Vektor, und nicht ein array. Die Unterscheidung der Menschen in der Regel Remis zwischen den beiden ist, dass ein array ist statisch dimensioniert, während ein Vektor kann wachsen oder schrumpfen.
InformationsquelleAutor Greg Malcolm | 2014-01-23
Schreibe einen Kommentar