Wie unterscheidet sich .iter () beim Schleifen von einer Referenz (&)?

8

Beim Spielen mit Rust habe ich festgestellt, dass man% c0_de% s und Vec s (und wahrscheinlich andere) als Referenz durchlaufen kann, anstatt HashMap zu verwenden.

%Vor%

Die Funktion .iter() scheint dasselbe Verhalten zu haben.

%Vor%

Sind beide Methoden zum Schleifen über eine Sammlung funktional identisch, oder gibt es feine Unterschiede zwischen dem Verhalten der beiden? Ich stelle fest, dass .iter() in Beispielen, die ich gefunden habe, der allgemein bevorzugte Ansatz zu sein scheint.

    
KChaloux 15.09.2015, 17:17
quelle

1 Antwort

7
  

Sind beide Methoden zum Schleifen einer Sammlung funktional identisch?

Ja, sie sind identisch.

Die Implementierung von IntoIterator für &Vec<T> :

%Vor%

Die Implementierung von IntoIterator für &HashMap<K, V, S> :

%Vor%

Beachten Sie, dass beide nur iter() aufrufen.

  

Ich stelle fest, dass .iter () in Beispielen, die ich gefunden habe, der allgemein bevorzugte Ansatz ist.

Ich benutze collection.iter() immer, wenn ich einen Iterator-Adapter verwenden möchte, und ich benutze &collection immer dann, wenn ich direkt auf die Sammlung iterieren möchte.

    
Shepmaster 15.09.2015, 17:22
quelle

Tags und Links