それっぽいのがわからなかったので、自作した完成形がこちら
いろいろなところに&が入っています
*Rust 1.43.1で実行しています
失敗形がこちら
1つ取得してOKとおもって
もう1つ追加したらdataの所有権がvec_countの方に移って消滅
2度めは ないよということをエラーメッセージが物語ってくれています
素早く片付けるというのがこの言語の方針のようです
文字列も追加作成してみました
ソースリスト
fn vec_count(v: &[i32], n: i32) -> i32{
let mut r = 0;
for i in v{
if i == &n{
r = r + 1;
}
}
r
}
fn vec_count_str(v: &[&str], s: &str) -> i32{
let mut r = 0;
for i in v{
if i == &s{ //&s sだとエラーに
r = r + 1;
}
}
r
}
fn main() {
let data = vec![1, 2, 3, 4, 5, 1, 9, 9, 9];
println!("{}", vec_count(&data, 9));
println!("{}", vec_count(&data, 1));
let data_str = vec!["1", "2", "3", "4", "5", "1", "A", "9", "9"];
println!("{}", vec_count_str(&data_str, "9"));
println!("{}", vec_count_str(&data_str, "1"));
println!("{}", vec_count_str(&data_str, "A"));
}