Ich bin ein Neuling von Rust. Hier ist der Code, um die Indizes der beiden Zahlen so zu finden, dass sie sich zu einem bestimmten Ziel addieren.Fehler: nicht alle Steuerpfade geben einen Wert zurück [E0269]
use std::collections::HashMap;
fn two_sum(nums: &[i32], target: i32) -> [usize;2] {
let mut map: HashMap<i32, usize> = HashMap::new();
for i in 0..nums.len() {
let want = target - nums[i];
match map.get(&nums[i]) {
Some(&seen) => return [seen, i],
_ => map.insert(want, i),
};
}
[0usize, 0usize];
}
fn main() {
let nums = [1,3,7,4];
let res = two_sum(&nums, 10);
println! ("{},{}", res[0], res[1]);
}
bekam ich einen Fehler wie unten
src/bin/2sum.rs:3:1: 15:2 error: not all control paths return a value [E0269]
src/bin/2sum.rs:3 fn two_sum(nums: &[i32], target: i32) -> [usize;2] {
src/bin/2sum.rs:4 let mut map: HashMap<i32, usize> = HashMap::new();
src/bin/2sum.rs:5
src/bin/2sum.rs:6 for i in 0..nums.len() {
src/bin/2sum.rs:7 let want = target - nums[i];
src/bin/2sum.rs:8 match map.get(&nums[i]) {
...
src/bin/2sum.rs:3:1: 15:2 help: run `rustc --explain E0269` to see a detailed explanation
error: aborting due to previous error
Wie es passiert ist? Wie kann ich das Problem lösen?
Dank
Sie können alle Rückwege machen einen Wert zurückgeben, in diesem Fall über das Semikolon entfernen, nachdem '[0usize, 0usize]' –
Haben Sie „run' rustc --explain E0269' eine detaillierte Erklärung zu sehen“, wie vom Compiler vorgeschlagen? – Shepmaster
Sie wären wahrscheinlich interessiert an [Wie man effizient nach einer HashMap sucht und einfügt?] (Http://stackoverflow.com/q/28512394/155423). – Shepmaster