-1
私はRustの初心者です。ここでは、2つの数字のインデックスを特定して特定のターゲットに追加するコードを示します。エラー:すべての制御パスが値を返すわけではありません。[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]);
}
私は
が起こったのか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
以下のようなエラーが発生しましたか?どうすれば問題を解決できますか?
おかげ
あなたは ' –
はあなたに「rustc --explain E0269'詳細な説明を参照するために'実行」でした[0usize、0usize] 'の後にセミコロンを削除経由して、すべてのリターンパスは、この場合には、値を返すことができますコンパイラによって提案された? – Shepmaster
おそらく、[HashMapを効率的に検索して挿入する方法](http://stackoverflow.com/q/28512394/155423)に興味があります。 – Shepmaster