Was ist der idiomatische Weg, um die letzten N Elemente in einem veränderbaren Vec zu knacken?

8

Ich bringe Rust Code zu RosettaCode bei, um sowohl Rust zu lernen als auch zur Rust Community beizutragen. Was ist die beste idiomatische Methode, um die letzten n -Elemente in eine veränderbare Vec einzufügen?

Hier ist grob gesagt, was ich geschrieben habe, aber ich möchte sehen, ob es einen besseren Weg gibt:

%Vor%

( Playground-Link )

    
bitloner 09.03.2015, 21:50
quelle

3 Antworten

8

Ich würde empfehlen, Vec::truncate zu verwenden:

%Vor%

Zusätzlich, ich

  • verwendete saturating_sub , um den Fall zu behandeln, in dem dies nicht der Fall ist N Elemente im Vektor
  • benutzte vec![] , um den Zahlenvektor einfach zu erstellen
  • hat den gesamten Vektor auf einmal ausgedruckt

Normalerweise möchten Sie, wenn Sie etwas "pop", diese Werte haben. Wenn Sie die Werte in einem anderen Vektor haben möchten, können Sie Vec::split_off :

%Vor%

Wenn Sie auf die Elemente zugreifen möchten, aber keinen ganz neuen Vektor erstellen möchten, können Sie Vec::drain :

%Vor%     
Shepmaster 09.03.2015, 22:00
quelle
3

Ein alternativer Ansatz wäre die Verwendung von Vec :: drain stattdessen. Dies gibt Ihnen einen Iterator, so dass Sie tatsächlich die Elemente verwenden können, die entfernt werden.

%Vor%

Die drain-Methode akzeptiert RangeArgument in Form von <start-inclusive>..<end-exclusive> . Sowohl Start als auch Ende können standardmäßig auf den Anfang / das Ende des Vektors verzichtet werden. Also sagen wir oben bei new_len und laufen bis zum Ende.

    
allTwentyQuestions 12.08.2016 14:22
quelle
2

Sie sollten sich die Funktion Vec::truncate ansehen aus der Standard-Bibliothek, die das für Sie tun kann.

( Spielplatz )

%Vor%     
Vaelden 09.03.2015 22:00
quelle

Tags und Links