Wie sind die Elemente eines Vektors in Rust verschoben?

8

Gibt es eine sichere Möglichkeit, Elemente eines Vektors in Rust zu verschieben? ( vec![1, 2, 3] wird vec![3] wenn zwei Plätze nach links verschoben werden). Ich habe es mit Copy types zu tun, und ich möchte keine höhere Strafe zahlen als das, was ich mit memmove machen würde.

Die einzige Lösung, die ich gefunden habe, ist unsicher: Verwenden Sie memmove direkt über ptr::copy .

    
Doe 06.07.2016, 15:09
quelle

1 Antwort

11

Ich würde Vec::drain verwenden.

Sie können es mit einer Auswahl der Elemente aufrufen, die Sie entfernen möchten, und es wird danach verschoben. Beispiel: ( Laufstall )

%Vor%

Eine andere Anmerkung:

  

Ich habe es mit Copy types zu tun, und ich möchte keine höhere Strafe zahlen als das, was ich mit memmove machen würde.

Bemerkenswert ist, dass das Verschieben immer a memcpy in Rust ist, so dass die Unterscheidung Copy vs nicht Copy hier keine Rolle spielt. Es wäre das gleiche, wenn die Typen nicht Copy wären.

    
Steve Klabnik 06.07.2016, 15:15
quelle

Tags und Links