Ist es möglich, einen Vektor direkt zu filtern?

9

Ich möchte einige Elemente aus Vec entfernen, aber vec.iter().filter().collect() erstellt einen neuen Vektor mit ausgeliehenen Elementen.

Ich möchte die ursprüngliche Vec ohne zusätzliche Speicherzuweisung mutieren (und den Speicher der entfernten Elemente als zusätzliche Kapazität des Vektors behalten).

    
Kornel 18.06.2015, 10:54
quelle

2 Antworten

15

Wenn Sie Elemente entfernen möchten, können Sie retain() , das Elemente aus dem Vektor entfernt, wenn die Schließung false :

zurückgibt %Vor%

Wenn Sie die Elemente an Ort und Stelle ändern möchten, müssen Sie dies in for x in vec.iter_mut() tun.

    
eulerdisk 18.06.2015, 11:05
quelle
0

Wenn Sie wirklich die Elemente des Vektors mutieren wollen, während Sie filtern, können Sie die nächtliche Methode verwenden Vec::drain_filter , ein extrem flexibles Werkzeug:

%Vor%

Sie können auch die entfernten Elemente abrufen, da der Rückgabewert der gesamten Methode ein Iterator ist!

    
Shepmaster 05.04.2018 18:58
quelle

Tags und Links