Ich muss einen Index eines Elements in einem Vektor von Strings finden, das ist, was ich bis jetzt bekommen habe:
%Vor%es erzeugt einen Fehler
%Vor% Ich nehme an, das liegt daran, dass enumerate()
ein Tupel von <usize, _>
zurückgibt (korrigiere mich, wenn ich falsch liege), aber wie konvertiere ich usize
in i32
hier? Auch wenn es einen besseren Ansatz gibt, bin ich offen für Vorschläge.
Nein, das liegt daran, dass die Indizes usize
, nicht i32
sind. Tatsächlich ist i32
für diesen Zweck völlig ungeeignet; Es ist vielleicht nicht groß genug, und es gibt keinen Grund für die Unterzeichnung. Verwenden Sie einfach usize
.
Einige weitere Hinweise: Der Aufruf von to_string()
ist nicht kostenlos und Sie brauchen ihn nicht für den Vergleich. Sie können String-Slices einfach gut vergleichen!
Auch wenn Sie wirklich ein usize
in ein i32
umwandeln möchten, können Sie das mit einem Cast tun: x as i32
, obwohl dies nicht einen Fehler bei Über- oder Unterlauf erzeugen ( dh kann das Ergebnis negativ sein).
Alles, was gesagt wurde, wie in Mathieu Davids Antwort erwähnt, ist ein position
Methode für Iteratoren, die das tun, was Sie wollen.
Ich denke, Sie sollten sich die Methode position
ansehen stattdessen.
Sie können hier testen .
Beachten Sie, dass dies für jeden Iterator funktioniert, sodass er für Vektoren, Arrays und Slices verwendet werden kann, die alle Iteratoren erzeugen.
Tags und Links rust