Gibt es eine Möglichkeit, Teile eines Vektors auf der Basis eines Prädikats zu entleeren?

8

Ich versuche, basierend auf einem Prädikat einige Elemente aus einem Vektor zu entfernen und das Ergebnis zu sammeln. Hier ist ein (nicht funktionierendes) Beispiel mit einem erwarteten Ergebnis:

%Vor%

Dies führt zu dem Fehler

%Vor%

Es gibt mehrere Alternativen, die ich angeschaut habe, keiner von ihnen scheint zu tun, was ich will:

  • Vec::retain entfernt die Elemente aus dem Vektor, gibt aber nicht das Eigentum an den entfernten Elementen zurück.

  • v.drain(..).filter(condition).collect() gibt den korrekten Wert für drained zurück, leert jedoch den gesamten Vektor.

WorldSEnder 09.10.2017, 16:50
quelle

1 Antwort

7

Nicht im stabilen Rust 1.20.0. Es gibt ein instabiles nächtliches Feature namens drain_filter , das genau das tut, was du willst:

%Vor%

Als stabile Problemumgehung können Sie möglicherweise Iterator::partition verwenden, den Arbeitsspeicher jedoch nicht erneut verwenden:

%Vor%     
Shepmaster 09.10.2017, 17:16
quelle

Tags und Links