Ich habe eine Funktion, die Result<Vec<&str>, String>
für eine Liste der Knoten zurückgibt. Meine Absicht ist es, nach einem Fehler oder einem leeren Vektor zu suchen, um früh zurückzukehren oder fortzufahren, wenn dort eine Liste ist.Entspricht entweder einem Fehler oder einem leeren Ergebnis
Dies ist, was ich unter anderem versuche, aber der Compiler beklagt sich über den Typ x
.
let nodes = list_nodes(client, &service);
match nodes {
Err(e) => {
println!("Unable to list nodes: {:?}", e);
return;
},
Ok(x) if x.as_slice() == [] => {
println!("No nodes found for service: {}", service);
return;
}
_ => {}
}
Der Fehler ist:
error[E0282]: type annotations needed
--> src/main.rs:28:18
|
28 | Ok(x) if x.as_slice() == [] => {
| ^^^^^^^^^^^^^^^^^^ cannot infer type for `A`
Ich denke, Sie müssen mehr Code für den Kontext hinzufügen. Beispiel: In der Fehlermeldung steht "A", nicht jedoch in Ihrem Codebeispiel. Bitte siehe https://StackOverflow.com/Help/Mcve –
@PeterHall, es gibt keine A in meinem Code, was Sie sehen, ist, was ich vom Compiler bekomme, gibt es keinen Kontext mehr, den ich geben könnte. –
@Arkaitz, versuche '& x == & []'. Jetzt vergleichen Sie die Scheibenreferenz und ein leeres Array. – red75prime