Zugriff auf das Letzte element von Vec oder eine Scheibe
Ich habe einige code, der wie folgt aussieht:
trait Stack {
fn top(&mut self) -> Option<f64>;
}
impl Stack for Vec<f64> {
fn top(&mut self) -> Option<f64> {
match self.pop() {
None => None,
Some(v) => {
self.push(v);
Some(v)
}
}
}
}
fn main() {
let mut stack: Vec<f64> = Vec::new();
stack.push(5.3);
stack.push(2.3);
stack.push(1.3);
match stack.top() {
Some(v) => println!("Top of the stack: {}", v),
None => println!("The stack is empty"),
}
}
Gerade jetzt, die top()
Methode ist die änderung self
, aber ich denke, dass dies nicht notwendig sein sollte. Der offensichtliche Weg, dies zu tun, es hat nicht wirklich funktioniert:
fn top(&mut self) -> Option<f64> {
match self.len() {
0 => None,
n => self[n - 1],
}
}
Habe ich gespielt, um ein bisschen mit der Umwandlung von usize
zu i32
- und Rückseite, aber nichts von dem, was ich Schreibe, sieht so kurz und lesbar wie ich denke, es sollte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch
- Scheibe::last
:Option::geklont
dient zum umwandeln von einemOption<&f64>
zu einemOption<f64>
passend zu dem gewünschten Funktion Unterschrift.Können Sie auch entfernen, die
mut
sowohl die Implementierung und die Eigenschaft, definition.Kurz nach der Buchung die Frage, die Antwort erscheint offensichtlich:
I. e. die
usize
war nie das problem - der Rückgabetyp vontop()
war.